A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID Departamento de Informática UFPE Jeferson Valadares.

Apresentações semelhantes


Apresentação em tema: "Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID Departamento de Informática UFPE Jeferson Valadares."— Transcrição da apresentação:

1 Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID Departamento de Informática UFPE Jeferson Valadares Recife, fevereiro de 1999

2 Roteiro * Linguagens de consulta de banco de dados x linguagens de programação * Banco de dados dedutivo e programação em lógica * Banco de dados orientado a objetos * Banco de dados dedutivo orientado a objetos * F-Logic e FLORID Exemplo introdutório: O banco de dados acadêmico em FLORID Objetos, nomes de objetos, métodos, átomos-F, moléculas-F Classes, assinaturas e herança Predicados, átomos-P e BD extensional Regras, consultas e BD intencional

3 Linguagens de consulta de banco de dados x Linguagens de programação * Linguagens de consultas de banco de dados: persistência acesso otimizado à memória secundária concorrência recuperação segurança maneira declarativa de recuperar e atualizar a informação ausência de representação procedimental atomicidade das transações estruturas fixas de dados

4 Linguagens de consulta de banco de dados x Linguagens de programação * Linguagens de programação: uso geral comportamento dinâmico permitem daemons, gatilhos para manutenção de integridade geralmente não implementam as características desejáveis de um BD

5 Banco de dados dedutivos e programação em lógica * Programação em lógica: conceito de lógica como linguagem de programação extensão do BD relacional prolog * Banco de dados dedutivos (BDD): programas lógicos sem funções (como em prolog), mas onde todos os fatos devem ser instanciados t ancestor (adão, X) modelo de interpretação do BD é finito BD relacional é um caso especial de BDD datalog

6 Orientação a objetos * Características importantes: abstração (estrutural e comportamental) de dados objetos semanticamente similares são classificados em classes, que são organizadas em hierarquias de classes (é-um) encapsulamento objetos complexos herança não-monotônica noção de tipo * Uso de linguagens orientadas a objeto com BD sonho antigo de usar a mesma linguagem para escrever as aplicações e para recuperar informação do BD

7 Banco de dados orientado a objetos (BDOO) * Manifesto BDOO [1] * Características obrigatórias: t objetos complexos t identidade de objetos t encapsulamento t tipos e classes (organizados em hierarquias) t overriding, overloading e late binding t completude computacional t extensibilidade t persistência t gerenciamento de armazenamento secundário t concorrência t recuperação t facilidade de consulta sob demanda

8 Banco de dados orientado a objetos * Características opcionais: t herança múltipla t verificação e inferência de tipos t distribuição t transações longas t versões * Escolhas em aberto: t paradigma de programação t sistema de representação t sistema de tipos t uniformidade

9 Banco de dados orientado a objetos * Características essenciais para um linguagem de manipulação de BD não são implementadas pelas linguagens orientadas a objetos tradicionais * Necessidade de uma linguagem que capture tanto orientação a objetos quanto as operações necessárias para manter a integridade de um BD

10 Banco de dados dedutivo orientado a objetos (BDDOO) * BDD: alta capacidade de inferência fundamentos formais pobre poder de modelagem * BDOO: rica capacidade de modelagem alta extensibilidade falta de consenso sobre o modelo de dados baixa capacidade de inferência fundamentos não tão bem formalizados quando os de BDD * BDDOO: deve combinar as vantagens dos dois métodos acima

11 F-logic e FLORID * F-logic (Frame logic) [2]: desenvolvida para capturar os bons aspectos de OO em um framework lógico provê uma teoria bem fundamentada para BDDOO e programação em lógica lógica pode ser usada como formalismo computacional e como linguagem de descrição - F-logic é adequada para definir, acessar e manipular esquemas de BD * FLORID [3]: implementação em C++ de F-logic com algumas extensões t interface web t expressões regulares t expressões de caminho

12 O banco de dados acadêmico em FLORID * A hierarquia é-um: empl::person student::person child(person)::person faculty::empl manager::empl yuppie::young yuppie::midaged article::report cacm::article jacm::article john:student john:empl sally:student sally:empl alice:child(john) mary:faculty bob:faculty bob:manager phil:empl 20:young 30:yuppie 40:midaged codd70:cacm flogic94:jacm cs1:dept cs2:dept integer:datatype string:datatype CS:string Mary:string Bob:string ms:degree phd:degree

13 O banco de dados acadêmico em FLORID * Fatos da base (BD extensional) 1. Bob is 40 and is the manager of the CS department. 2. His assistants are John and Sally. t bob [name-> Bob; age->40; affiliation->cs1[dname-> CS; mngr ->bob; assistants->> {john, sally}]] 3. Marys highest degree is an MS. 4. She works at the CS department and is friend to Bob and Sally. t mary [name-> Mary; highestDegree->ms; friends->>{bob, sally} affiliation->cs2[dname->CS]]

14 O banco de dados acadêmico em FLORID * Informações gerais das classes: 5. Every faculty is a midaged person who writes articles, makes in the average $50,000 a year and owns a degree of some kind, typically a PhD. 6. A facultys boss is both a faculty and a manager. t faculty [boss=>(faculty, manager); age=>midaged; highestDegree=>degree; papers->>article; highestDegree*->phd; avgSalary->50000]

15 O banco de dados acadêmico em FLORID * Informações gerais das classes (cont.): 7. Every person has a name, friends who must be persons, and children who also must be persons. t person [name=>string; friends=>>person; children=>>child(person); 8. Every employee is affiliated to some department, has a boss who is also an employee and joint work on reports with other employees. t empl [affiliation=>dept; boss=>empl;

16 O banco de dados acadêmico em FLORID * Informações gerais das classes (cont.): 9. Every department has a manager who is an employee and assistants who are both employees and students. t dept [assistants=>>(student, empl); mngr=>empl] * Regras dedutivas: 10. A boss is an employee who is the manager of another employee of the same department. t E[boss->M] :- E:empl ^ D:dept ^ E[affiliation->D[mngr->M:empl]] 11. A joint work is a paper that is written by two faculties. t X :- Y:faculty ^ X:faculty ^ Y [papers->>Z] ^ X [papers->>Z]

17 O banco de dados acadêmico em FLORID * Consultas: 0a: Who are the midaged employees of the CS department and who are their boss? t ?- X:empl ^ X [boss-> Y; age->Z:midaged; affiliation->D[dname->CS]]. 0b: Who published jointly with Mary in the Journal of the ACM? t ?- 0c: Where did Mary published joint work with Phil? t ?-

18 Objetos * Construtores básicos de FLORID * Modelam entidades do mundo real * Representados internamente por identificadores * Acessados por nomes cada nome identifica apenas um objeto um objeto pode ter mais de um nome

19 Nomes de objetos * Nomes de objetos e nomes de variáveis: id-terms * Nomes de objeto sempre começam com letras minúsculas bob, alice, child * Nomes de variáveis sempre começam com letras maiúsculas ou underscore Z, Method, _11 * Dois nomes de objetos built-in: inteiros t +3, 3, -3 strings (sempre entre aspas) t Bob, Mary

20 Métodos * Representam relações entre objetos * Aplicação de um método a um objeto: átomo-F de dados id-term hospedeiro, método e resultado objetos podem aparecer em qualquer posição variáveis podem ser usadas na posição método * Métodos funcionais ou escalares (resultam em apenas um objeto bob[boss->john]. * Métodos multivalorados (podem resultar em mais de um objeto) mary[friends->>{bob,sally}].

21 Métodos * A posição resultado de um método multivalorado pode ser o conjunto vazio bob[friends->>{ }]. t pode também ser vista como uma declaração do método friends * Métodos com parâmetros mary cacm92}]. mary

22 Métodos * Consultas com métodos multivaloradas ?- mary [friends->>X] X/bob X/sally t importante notar que variáveis não se instanciam com conjuntos de dados (já que as consultas verificam pertinência e não igualdade): t X/ {bob,sally} ?- mary[friends->>{bob,sally}]. true ?- mary[friends->>{bob}]. true ?- mary[friends->>{ }]. true

23 Átomos-F * Expressa exatamente uma propriedade de um objeto (a que classe ele pertence, a especificação de um método) bob:empl. bob[boss->>{john}]. bob[boss->>{sally}].

24 Moléculas-F * Métodos representam relações entre objetos, que são organizados em classes * Esta informação sobre os objetos é encapsulada através de moléculas-F bob:empl[boss->>{john,sally}]. * Moléculas-F sem propriedades: sally[ ]. * Açúcar sintático da linguagem

25 Classes * Átomos-F do tipo é-um: classe à qual o objeto pertence john:student sally:empl * Átomos-F de subclasse: relação de subclasse entre duas classes empl::person faculty::empl * F-logic também suporta overloading de métodos empl empl integer)=>>report].

26 Assinaturas * Átomos-F de assinatura definem os métodos aplicáveis para instâncias de certas classes * Restringem o tipo dos parâmetros e dos resultados destes métodos faculty[boss=>(faculty)]. faculty[boss=>(manager)]. person[friends=>>person]. dept[assistants=>(student, empl)]. * Pode-se também declarar métodos sem restrições de tipo person[believes_in=>( )].

27 Herança * F-logic permite herança múltipla * Dois tipos de herança: Herança estrutural t propagação de uma restrição de tipo de um método de uma superclasse para suas subclasses (Átomos-F de subclasse) Herança comportamental t propagação dos resultados da aplicação de um método de uma classe para suas instâncias e subclasses * Métodos herdáveis expressam herança comportamental: person[believes_in*->god] t bob [believes_in->god] t john [believes_in->god] t empl [believes_in*->god]

28 Herança e regras * Resolução da herança john:king. peter:king. king[lives*->palace]. peter[lives->abroad] :- john[lives->palace]. john[lives->abroad] :- peter[lives->palace]. t ?- sys.eval[]. ¤Begin semi-naive evaluation ¤End evaluation t ?- X[lives->Y]. ¤Answer to query : ?- X[lives -> Y]. 4 X/john Y/palace 4 X/peter Y/abroad ¤2 output(s) printed

29 Overriding * Regras lógicas tem prioridade sobre a herança: abraham:person[believes_in->god; descendant->>{isaac:person}]. ahab:person. person[believes_in*->baal]. X[believes_in->god] :- abraham[descendant->>X:person]. god[loves->>X] :- X[believes_in->god]. t ?- sys.eval[]. ¤Begin semi-naive evaluation ¤End evaluation t ?- god[loves->>X]. ¤Answer to query : ?- god[loves ->> {X}]. 4 X/abraham 4 X/isaac ¤2 output(s) printed

30 Predicados e Átomos-P * Em F-logic, predicados são usados da mesma maneira do que em datalog * Um predicado seguido de um ou mais id-terms separados por vírgulas e incluído nos parênteses é chamado de Átomo-P friends(bob,mary). empl(john). person(bob). true. * Os predicados (fatos) formam o BD extensional

31 Átomos-P * Informação expressa em átomos-P pode ser representada por átomos-F, obtendo-se uma modelagem mais natural mary[friends_with->>bob]. bob:empl. * Similarmente às moléculas-F, moléculas-P podem ser construídas aninhando-se átomos-F ou moléculas-F em átomos-P friends(mary[affiliation->cs1], bob:empl). * Átomos-F e moléculas-F podem ser aninhados em átomos- P, mas o inverso não é verdadeiro empl(bob)[friends(bob,sally)].

32 Regras * Baseadas em uma dada base de objetos (que pode ser considerada um conjunto de fatos), as regras oferecem a possibilidade de se derivar nova informação * Guardam informação genérica da forma: sempre que a pre-condição for verificada, a conclusão também será t X[manager->>Y] :- X[boss->>Y]. * Formam o BD Intencional

33 Consultas * Podem ser consideradas um tipo de regra especial com a primeira parte vazia ?- mary[friends->>Y:empl]. * A resposta de uma consulta consiste de todas as variáveis tal que a instância da regra com aquela variável seja verdadeira na base de objetos Y/bob Y/sally

34 Variáveis dont care * Variáveis para resultados intermediários que não aparecem no resultado ?- X:empl[boss->_Y], _Y[friends->>sally]. * A variável _: cada ocorrência desta variável é considerada uma variável dont care distinta

35 Referências * 1. The object-oriented database system manifesto - Atkinson, Bancilhon, DeWitt, Dittrich, Maier and Zdonik * 2. Logical foundations of object-oriented and frame- based languages - Kifer, Lausen and Wu * 3. How to write F-logic programs in FLORI D - Frohn, Himmeröder, Kandzia and Schlepphorst


Carregar ppt "Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID Departamento de Informática UFPE Jeferson Valadares."

Apresentações semelhantes


Anúncios Google