FLORID: Predicados built-in

16
FLORID: FLORID: Predicados built-in Predicados built-in Departamento de Informática UFPE Jeferson Valadares ([email protected]) Recife, fevereiro de 1999

description

FLORID: Predicados built-in. Departamento de Informática UFPE Jeferson Valadares ([email protected]) Recife, fevereiro de 1999. Roteiro. Igualdade semântica Aritmética Cadeias de caracteres e expressões regulares Agregação Interface para web FLORID x LIFE - PowerPoint PPT Presentation

Transcript of FLORID: Predicados built-in

Page 1: FLORID: Predicados built-in

FLORID:FLORID:Predicados built-inPredicados built-in

Departamento de InformáticaUFPE

Jeferson Valadares([email protected])

Recife, fevereiro de 1999

Page 2: FLORID: Predicados built-in

RoteiroRoteiro

Igualdade semântica Aritmética Cadeias de caracteres e expressões regulares Agregação Interface para web FLORID x LIFE FLORID x linguagens de programação orientada a

objetos

Page 3: FLORID: Predicados built-in

Igualdade e AritméticaIgualdade e Aritmética

Igualdade entre objetos:• abram = abraham.

Objetos inteiros:• operadores de comparação usuais

?- jacob [son@(X, Y)->Z], Y<=3¤ retorna os três primeiros filhos de jacob

• operações aritméticas 3 +3 * 2

¤ espaços não são opcionais ?- jacob [son@(X,A)->Z1; son@(X,B)->Z2; son@(X,C)->Z3],

B = A + 1, C = A + 2¤ verdadeiro se jacob tiver tido três filhos consecutivos com a

mesma mulher

Page 4: FLORID: Predicados built-in

Cadeias de caracteresCadeias de caracteres

strlen(arg1, arg2)• verdadeiro se arg2 for o tamanho da cadeia arg1

?- strlen (“logic”, X).

• Também pode ser usado para recuperar cadeias de determinados tamanhos, mas as possíveis cadeias têm que estar ligadas à outras moléculas no corpo da regra

?- strlen (X, 40). ?- strlen (X, 4), substr (X, “avião”).

Page 5: FLORID: Predicados built-in

Cadeias de caracteresCadeias de caracteres

strcat (arg1, arg2, arg3)• verdadeiro se arg3 for o resultado da concatenação de arg1

e arg2 ?- strcat (“a”, “b”, X).

X/ “ab” ?- strcat (“a”, Y, “ab”).

Y/”b” Nunca mais de uma variável livre!

Page 6: FLORID: Predicados built-in

Cadeias de caracteresCadeias de caracteres

substr (arg1, arg)• verdadeiro se arg1 for uma sub-cadeia de arg2• não-sensível ao caso

?- substr (“DaTA”, “database”).true

• um objeto representando um documento web também pode ser usado em arg2. Neste caso o predicado retorna true se arg1 estiver presente no documento

Page 7: FLORID: Predicados built-in

Cadeias de caracteres e expressões Cadeias de caracteres e expressões regularesregulares

match (arg1, arg2, arg3, arg4)• procuram todas as sub-cadeias de arg1 que casam com a

expressão regular em arg2; arg3 é uma cadeia de formato descrevendo como as cadeias casadas devem ser retornadas em arg4

?- match (“linux98”, ”\([0-9]\)\([0-9]\)”, “\2swap\1”, X).X\”8swap9”

retorna sem formatação se arg3 for a cadeia vazia (“”) sintaxe de expressões regulares igual à do emacs

Page 8: FLORID: Predicados built-in

AgregaçãoAgregação

Operadores usuais estão implementados: max, min, count, sum

Operadores de agregação na forma:• agg{X [G1,...,Gn]; b}

?- Z = max {X; john[salary@(Year)->X], Year <1990}.

Page 9: FLORID: Predicados built-in

Interface para webInterface para web

Visão abstrata da web como um grafo direcionado rotulado onde os nós representam documentos e os vértices rotulados são providos pelos hyperlinks

Ao contrário de SQL, linguagens para BDDs são capazes de examinar caminhos de tamanho arbitrário em um grafo -como a estrutura da web é desconhecida a princípio, esta é uma característica importante para acesso à web

Page 10: FLORID: Predicados built-in

Modelando a webModelando a web

Classe url modela um documento como um objeto• “http://www.di.ufpe.br/~compint/” seria o id-term de um

objeto da classe url Método get para recuperar o documento:

• “http://www.di.ufpe.br/~compint/”.get[ ] • get transforma uma página HTML em um objeto webdoc

Documentos recuperados têm a seguinte estrutura:• url::string [get =>webdoc]• webdoc[self =>url; author =>string; modif => string; type

=>string; hrefs@(string)=>> url; error =>>string].

Page 11: FLORID: Predicados built-in

Consultando a webConsultando a web

Exemplo:• “http://www.di.ufpe.br/~compint” = ourUrl.• ourUrl:url.• ourServer = “www.di.ufpe.br/”.• X.get:ourPage :- X: ourUrl.• Y.get:ourPage :- X:ourPage[hrefs@( _ ) ->> Y],

substr(ourServer, Y). Recupera os links que estão no mesmo servidor

• X:ourPage[hrefs@( _ ) ->> Y], substr(“mailto:”,Y). Recupera todos os endereços de e-mail achados nas páginas

visitadas

Page 12: FLORID: Predicados built-in

Consultando a webConsultando a web

?- X:ourPage[error ->> Y].• Detecta links perdidos ou documentos não-processados

?- sys.prn.style@(“html”)[ ].• Seleciona um tipo especial de saída que direciona todos os

resultados de consultas para um arquivo HTML e chama o netscape para visualização

Page 13: FLORID: Predicados built-in

Limitando a buscaLimitando a busca

Para se limitar a busca no grafo, pode-se limitar a profundidade da busca

Por exemplo, todas as páginas a partir do início em quatro movimentos:• X.get:ourPage[depth->>0] :- X:ourUrl• Y.get:ourPage[depth->>N] :-X:ourPage[depth ->> M;

hrefs@( _ ) ->>Y; N = M +1, N <4.

Page 14: FLORID: Predicados built-in

FLORID x LIFEFLORID x LIFE

Pontos em comum:• integração de orientação a objetos com regras -term é bem semelhante a uma mólecula-F (a não ser

pelos métodos não-herdáveis) Diferenças:

• FLORID: encadeamento progressivo (dirigido pelos dados)• LIFE: encadeamento regressivo (dirigdo pelos objetos)

Page 15: FLORID: Predicados built-in

FLORID x LIFEFLORID x LIFE

Vantagens de FLORID sobre LIFE• distinção classe/objeto• herança (método

herdável/não-herdável• atributo de classe• interface web built-in• regra mólecula-F :-

mólecula-F; em life não há regra do tipo -term :- -term, só pred(-term) :- pred(-term)

• igualdade semântica• agregação

Vantagens de LIFE sobre FLORID• interface socket built-in• interface x-windows built-in• paradigma funcional

(conhecimento inerentemente procedimental)

• sem limitação sobre regras recursivas e ocorrência de variáveis livres (fatos universais)

• acesso a dados persistentes

Page 16: FLORID: Predicados built-in

FLORID x Linguagens orientadas a objetoFLORID x Linguagens orientadas a objeto

Vantagens de FLORID:• Capacidade de inferência• Modelo de dados bem definido• Fundamentos bem formalizados