Vous êtes sur la page 1sur 22

Aula Prtica - Prolog Sistemas Inteligentes /~if684

Drance edit Master subtitle style Click to Oliveira dmof@cin.ufpe.br www.cin.ufpe.br/~dmof/monitoria/si

4/22/12

Prolog
PROgramming in LOGic; Linguagem simples, prtica e eficiente ! Paradigma Lgico e Declarativo; Processamento de Linguagem Natural; Inferncia dedutiva sobre Clusulas de Horn; Programa = Conjunto de Clusulas (Axiomas).

4/22/12

Sintaxe
Prolog

no emprega declaraes de tipos; Tipos so tratados como sendo termos; A natureza de um termo depende de como tal termo foi declarado; Ou seja, os elementos lxicos utilizados na declarao do termo determinam se o termo ser um nmero, uma constante, um texto, ..

4/22/12

Sintaxe: tomos
Nomes

prprios em Linguagem Natural; Representam relaes, funes ou objetos; Constitudos por letras, nmeros e _; Mas iniciados por uma letra minscula ! Pode-se usar, tambm, qualquer sequncia entre aspas simples (Ex: Bom Dia).
Exemplos:

gosta, jorge, ana_maria, x, a1; gosta(jorge, ana_maria). gosta(jorge, x).


4/22/12

Sintaxe: Inteiros e Reais


Amplitude

da representao dos inteiros e reais depende da implementao do Prolog; Sinais permitidos:


. para os nmeros reais; - para os nmeros negativos.

Exemplos:

999, -12, 1.0, 1.34, 15.

4/22/12

Sintaxe: Variveis
Objetos

definidos, mas no especificados ! Variveis no sentido matemtico, porm no no sentido de Linguagens Imperativas; Declaradas da mesma forma que os tomos; Porm iniciadas por letras maisculas ou _; Variveis annimas so aquelas que, por s serem usadas uma vez, no precisam de um nome, sendo simplesmente escritas como _.
Exemplos:
4/22/12

Sintaxe: Variveis
tem_filho(X)

:- pai(X, Y). Se X tem um filho, ele pai de algum Y !


tem_filho(X)

:- pai(X, _). Podemos usar uma varivel annima j que Y s aparecia uma vez !
Nota:

O alcance de uma varivel est restrito clausula onde ocorre.

4/22/12

Sintaxe: Termos Compostos


So

a nica forma de expressar estruturas de dados complexas em Prolog; Consistem de um funtor ou cabea (tomo) e zero ou mais parmetros listados entre parnteses e separados por vrgulas. Caracterizado pelo seu nome e aridade; Podemos associar um mesmo tomo a termos diferentes contanto que as suas aridades sejam diferentes.
Exemplos:

data(3, abril, 2009).

4/22/12

Sintaxe: Listas
[]

representa uma lista vazia; Se T uma lista e H um elemento, ento o termo '.'(H,T ) uma lista. H o primeiro elemento, tambm chamado de cabea; T o contedo restante da lista.
Exemplo:

[1, 2, 3] seria representada internamente como:


'.'(1, '.'(2, '.'(3, []))).

4/22/12

Sintaxe: Listas
Para

convenincia do programador, existem, na biblioteca padro, vrias funes que manipulam listas:

member(1, [1, 2, 3]):


yes/no.

member(X, [1, 2, 3]):


X = 1, X = 2, X = 3.

Append(L1, L2) :
Concatena L1 com L2.

4/22/12

Sintaxe: Resumo

4/22/12

Predicados
Predicado:

Unidade bsica do Prolog; Postulado como verdadeiro. Expressam Fatos.

Exemplos:

gato(tom). pai(filipe, pedro).

4/22/12

Fatos
So

expressados por predicados; So os significados dos predicados.


Exemplos:

Fato: Tom um gato:


Predicado: gato(tom).

Fato: Filipe o pai de Pedro:


Predicado: pai(filipe, pedro).

4/22/12

Regras ou Clusulas
Tambm,

expressados por predicados; O conseqente ou cabea escrito primeiro e o antecedente ou corpo escrito depois;
Exemplo:

a :- b, c, d:
a verdadeiro se b, c, d so verdadeiros.

luz(acesa) :- interruptor(ligado):
A luz est acesa se o interruptor estiver ligado.

4/22/12

Queries
So

perguntas ao banco de dados; Podem ser de dois tipos:


?- gosta(jose, maria):
YES; NO.

?- gosta(jose, X):
X = maria; NO.

4/22/12

Ferramentas
SWI-Prolog

www.swi-prolog.org

Java

Prolog Environment:

http://www.cin.ufpe.br/~dmof/monitoria/si/jpe.rar

4/22/12

Exerccio 1
Programa: Jorge

gosta de cinema; Jorge gosta de futebol; Maria gosta de todos que gostam de cinema e futebol;
Queries: Existe

algum que goste de cinema e de futebol ? Maria gosta de Jorge ? E Jorge de Maria ?
4/22/12

Exerccio 2
Programa: Rui

filho de Carlos; Carlos filho de Jorge.


Queries: Quem

o pai de Rui ? E o av ?

4/22/12

Projeto
Click to edit Master subtitle style

4/22/12

Especificao do Projeto
/~if684

-> Projetos

http://www.cin.ufpe.br/~dmof/monitoria/si/especi

4/22/12

Prazos de Entrega
1

Parte (Domnios em OWL):

02/06/09

parte (Prolog + OWL / Jess + OWL):

16/06/09

4/22/12

Links
SWI-Prolog:

http://www.swi-prolog.org

Thea

- An OWL library for [SWI] Prolog:

http://www.semanticweb.gr/TheaOWLLib/

SWRLJessTab

http:// protege.cim3.net/cgi-bin/wiki.pl?SWRLJessTab#nid6RJ

4/22/12

Vous aimerez peut-être aussi