1 / 35

Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID

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 (jlfv@di.ufpe.br) Recife, fevereiro de 1999. Roteiro. Linguagens de consulta de banco de dados x linguagens de programação

moanna
Télécharger la présentation

Banco de Dados Dedutivos, Programação em Lógica, Banco de Dados Dedutivos Orientado a Objetos e FLORID

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. 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 (jlfv@di.ufpe.br) 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 dadosxLinguagens 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 dadosxLinguagens 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 • 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: • objetos complexos • identidade de objetos • encapsulamento • tipos e classes (organizados em hierarquias) • overriding, overloading e late binding • completude computacional • extensibilidade • persistência • gerenciamento de armazenamento secundário • concorrência • recuperação • facilidade de consulta sob demanda

  8. Banco de dados orientado a objetos • Características opcionais: • herança múltipla • verificação e inferência de tipos • distribuição • transações longas • versões • Escolhas em aberto: • paradigma de programação • sistema de representação • sistema de tipos • 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 • interface web • expressões regulares • expressões de caminho

  12. 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 O banco de dados acadêmico em FLORID • 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. • bob [name-> “Bob”; age->40; affiliation->cs1[dname-> “CS”; mngr ->bob; assistants->> {john, sally}]] • 3. Mary’s highest degree is an MS. • 4. She works at the CS department and is friend to Bob and Sally. • 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 faculty’s boss is both a faculty and a manager. • 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. • 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. • empl [affiliation=>dept; boss=>empl; jointWorks@empl=>>report]

  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. • 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. • 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. • X [jointWorks@Y->>Z] :- 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? • ?- X:empl ^ X [boss-> Y; age->Z:midaged; affiliation->D[dname->”CS”]]. • 0b: Who published jointly with Mary in the Journal of the ACM? • ?- mary[jointWorks@Y->>jacm90]. • 0c: Where did Mary published joint work with Phil? • ?- mary[jointWorks@phil->>Z].

  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 • +3, 3, -3 • strings (sempre entre aspas) • “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->>{ }]. • pode também ser vista como uma declaração do método friends • Métodos com parâmetros • mary [ jointWorks@(phil)->>{jacm90,cacm92}; jointWorks@(jacques)->>{aaai92, cacm92}]. • mary [ jointWorks@(phil,1)->>jacm90; jointWorks@(phil,2)->>cacm92].

  22. Métodos • Consultas com métodos multivaloradas • ?- mary [friends->>X] X/bob X/sally • importante notar que variáveis não se instanciam com conjuntos de dados (já que as consultas verificam pertinência e não igualdade): • 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 [jointWorks@empl=>>report]. • empl [jointWorks@(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]. • empl[jointWorks@empl=>>report]. • 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 • 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 • 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] • bob [believes_in->god] • john [believes_in->god] • 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]. • ?- sys.eval[]. • Begin semi-naive evaluation • End evaluation • ?- X[lives->Y]. • Answer to query : ?- X[lives -> Y]. • X/john Y/palace • 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]. • ?- sys.eval[]. • Begin semi-naive evaluation • End evaluation • ?- god[loves->>X]. • Answer to query : ?- god[loves ->> {X}]. • X/abraham • 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. • mary[jointWorks@(bob)->>jacm94]. • 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á • 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 “don’t 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 “don’t 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

More Related