1 / 16

FLORID: Predicados built-in

FLORID: Predicados built-in. Departamento de Informática UFPE Jeferson Valadares (jlfv@di.ufpe.br) 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

zorana
Download Presentation

FLORID: Predicados built-in

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FLORID:Predicados built-in Departamento de Informática UFPE Jeferson Valadares (jlfv@di.ufpe.br) Recife, fevereiro de 1999

  2. Roteiro • 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

  3. Igualdade 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

  4. Cadeias 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”).

  5. Cadeias 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!

  6. Cadeias 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

  7. Cadeias de caracteres e expressões regulares • 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

  8. Agregaçã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}.

  9. Interface 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

  10. Modelando 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].

  11. Consultando 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

  12. Consultando 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

  13. Limitando 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.

  14. FLORID 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)

  15. 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 FLORID x LIFE

  16. FLORID x Linguagens orientadas a objeto • Vantagens de FLORID: • Capacidade de inferência • Modelo de dados bem definido • Fundamentos bem formalizados

More Related