1 / 32

Banco de Dados Dedutivos Orientados a Objetos e FLORA

Banco de Dados Dedutivos Orientados a Objetos e FLORA. Sérgio Queiroz srmq@di.ufpe.br CIn - UFPE Recife, dezembro de 1999. Bancos de dados orientados a objetos DOOD: bancos de dados dedutivos orientado a objetos F-Logic, FLORID e FLORA

Télécharger la présentation

Banco de Dados Dedutivos Orientados a Objetos e FLORA

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 Orientados a Objetos e FLORA Sérgio Queiroz srmq@di.ufpe.br CIn - UFPE Recife, dezembro de 1999

  2. Bancos de dados orientados a objetos DOOD: bancos de dados dedutivos orientado a objetos F-Logic, FLORID e FLORA Exemplo introdutório: O banco de dados acadêmico em F-Logic Objetos, nomes de objetos, métodos, átomos-F, moléculas-F e BD extensional Classes, assinaturas, herança e esquemas de BD Predicados e átomos-P Regras, consultas e BD intencional Negação e restrições de segurança na conclusão das regras Interação herança-dedução Verificação de tipos e Meta-programação FLORA x SQL FLORA x DataLog FLORA x LIFE Roteiro

  3. Problemas enfrentados pela área de banco de dados • Aplicações não-tradicionais (“non-business type”) • CAD, GIS, AI • Necessidade de manusear grandes quantidades de dados • Dados complexos • Evolução do esquema • Mudanças significativas na relação de custo memória/disco • Impedance mismatch entre linguagens de programação e linguagens de consultas em banco de dados

  4. Características gerais de BDs • Persistência • Gerenciamento de memória secundária • Concorrência • Recuperação • Consultas Ad-hoc Bancos de Dados Orientados a Objetos • Combina o paradigma OO com a tecnologia de BD • Modelo de dados OO • Requisitos obrigatórios para ser considerado OO (manifesto): • Objetos complexos • Identidade de objetos • Encapsulamento • Tipos ou Classes • Herança • Overriding, Overloading eLate Binding • Completude computacional • Extensibilidade

  5. BDDOO BD Dedutivo Orientado a Objetos BDOO: • identidade de objetos • objetos complexos • classes • encapsulamento • herança • overriding, overloading e late binding • extensibilidade • linguagem de consulta declarativa • embasamento teórico Bancos de Dados Dedutivos • fundamentação lógica • linguagem declarativa poderosa com mecanismo de dedução • tipos abstratos de dados • identidade de objetos • modelo de dados flat

  6. Estratégias para construção de um DOOD • Utilização da linguagem declarativa existente • Integração da linguagem declarativa existente às novas extensões orientadas a objetos • Tempo de adaptação à linguagem • Flexibilidade da integração: bidirecional, unidirecional. • Impedance Mismatch • Semântica Formal • Uma única linguagem • Reconstrução total do sistema

  7. Frame-logic (F-logic) • Tentativas de estender BD dedutivo com funcionalidades OO ou vice-versa tendem a sacrificar características lógicas ou orientadas a objetos importantes • F-Logic (1995) • Lógica completa para representar os conceitos do paradigma orientado a objetos • Objetos complexos; • Identidade de objetos (oid); • Herança; • Polimorfismo; • Encapsulamento; • etc. • Apropriada para definir, consultar e manipular esquemas de bancos de dados

  8. FLORID (U. Freiburg, 1997) implementação de F-logic em C++ com algumas extensões avaliação bottom-up interface web expressões regulares expressões de caminho nenhuma integração com C++ apenas linguagem de consulta em memória central nenhum outros serviços em BD sem encapsulamento FLORA (SUNY, 1999) implementação de F-logic sob XSB avaliação top-down expressões de caminho integração (quase) completa e bi-direcional com XSB mais eficiente que Florid com compilação via “tabling” apenas linguagem de consulta em memória central nenhum outros serviços em BD sem encapsulamento FLORID e FLORA

  9. young midaged person 40 20 yuppie child(person) student empl 30 john phil child(john) sally faculty manager alice report mary bob article datatype cacm jacm string integer degree dept "CS" flogic94 codd70 "Bob" "Mary" ms phd cs2 cs1 BD Acadêmico em F-Logic: hierarquia “é um” empl :: person student :: person faculty :: empl child(person) :: person john : student john : empl cs1 : dept ... yuppie :: young 20 : young 30 : yuppie 40 : midaged "CS" : string "Bob" : string alice : child(john) ...

  10. BD Acadêmico em F-logic: fatos • Bob is 40 and is the manager of the CS department. His assistants are John and Sally. bob[name -> "Bob"; age -> 40; affiliation -> cs1[dname -> "CS"; mngr -> bob; assistants ->> {john, sally}]] • Mary's highest degree is an MS. 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"]] ...

  11. BD Acadêmico em F-logic: informações gerais das classes • Every faculty is a midaged person who writes article, makes in the average $50,000 a year and owns a degree of some kind, typically a PhD. 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] • 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] • 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)] ...

  12. BD Acadêmico em F-logic: regras dedutivas • 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]] • 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]

  13. BD Acadêmico em F-logic: consultas • 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"]] • Who published jointly with Mary in the Journal of the ACM? ?- mary[jointWorks@Y ->> jacm90] • Where did Mary published joint work with Phil? ?- mary[jointWorks@phil ->> Z]

  14. Alfabeto de F-logic: Conjunto de Símbolos de funções (F) Conjunto Símbolos de predicados (P) Variáveis (V) Distincao entre P, F e V seguindo mesmas convencoes de que Prolog Termos ID Termos de 1ª ordem sobre F e V Nomes de objetos, métodos e classes Oid (Object Identifier): Termos ID sem variáveis Fórmulas atômicas átomos de 1ª ordem ex, p(X1,...,Xn) O : C O instância de C C :: D C subclasse de D Hierarquia de classe e objetos não precisa ser um reticulado Sintaxe de F-logic

  15. Fórmulas atômicas (cont.) O[M->R0] Método escalar M(O) = R0 O[M->>{R1, ..., Rn}] Método multivalorado M O[M@(Arg1, ..., ArgN) -> R0] Método parametrizado C[M=>T] Assinatura. M aplicado a objetos da classe C deve retornar objeto de classe T C[M=>>T] Assinatura do método M, multivalorado. Sintaxe de F-logic: metodos e assinaturas

  16. F-átomos e F-moléculas • F-átomos • Representam exatamente uma propriedade de um objeto, tal como uma relação de classe ou definição de método • isaac:man. • isaac[father->abraham]. • isaac[son->>{jacob}]. • isaac[son->>{esau}]. • F-moléculas • F-átomos podem ser aninhado em F-moléculas • C::D ou O:C, onde C, D e O são termos-id. • Uma molécula da forma O[lista de métodos separadas por ;]. • Ex.: isaac:man[father->abraham; son->>{jacob, esau}]

  17. Predicados, Átomos-P e Moléculas-P • Átomo-P: predicado com termos-id como argumentos. • father(isaac, abraham). • woman(rebekah). • married(isaac, rebekah). • Molécula-P: predicado com átomos-F ou moléculas-F aninhado nos seus argumentos. • married(isaac[father->abraham], rebekah:woman). • Aninhamento inverso proibido: predicados não podem ser aninhados em átomos-F ou moléculas-F. Átomos e Moléculas (F e P) representam os fatos Banco de dados extensional

  18. Expressões de Caminho • Facilidade sintática da linguagem, permitindo acesso elegante a objetos através de métodos de outros objetos. • O.M  O[M->Ro] • O..M  O[M->>{Ri}] • Presente em outras linguagems • Ex.: cars = john.cars(); • Normalmente só é possível uma dimensão • E se quiséssemos or carros vermelhos fabricados em 1998 que John possui? • Expressoes de FLORID e FLORA permiten: • caminhar ao longo de 2 dimensões: • referenciar propriedades dos objetos no caminho, sem sair dele.

  19. Expressões de Caminho • Exemplo %% Declaração da hierarquia person :: object. company :: object. john:employee. bob:person. employee :: person. manager :: employee. vehicle :: object[color*->black; produced*=>europe]. germany : europe. italy : europe. ferrari :: vehicle[color*->red; produced*->italy]. bmw :: vehicle[produced*->germany]. mercedes :: vehicle[produced*->germany]. audi :: vehicle[produced*->germany]. porsche :: vehicle[produced*->germany]. f50 : ferrari. boxsterS : porsche. a6 : audi. z8 : bmw. c280 : mercedes.

  20. Expressões de Caminho Numa linguagem do tipo SQL: SELECT X, Y FROM X in employee FROM Y in X.vehicles FROM Z in europe WHERE X.worksFor.president = X AND Y.color = black AND Y.produced = Z • Exemplo (cont.) %% Fatos karl:employee[vehicles->> {c280, a6, f50, boxterS}; worksFor->siemens]. jamesbond:person[vehicles->>z8]. siemens:company[country -> germany; president -> karl]. X[self->X]. %% Consulta X:employee[worksFor -> _[president -> X]] ..vehicles[color->black; produced->_:europe; self->Z].

  21. Negação em FLORA • Negação através de “well-founded semantics”, implementada no XSB • Especificada através do operador tnot • Atualmente, tnot só pode ser aplicado a predicados Prolog (não pode ser usado com moléculas-F) :- table aux/1. aux(X, Y) :- a[m->>X; a->Y]. d[f->Z] :- e[w->Z; v->f(X,Y)], tnot(aux(X, Y)). • Restrição devido ao sistema XSB • Todas as variáveis em predicados negados têm que ser instanciadas antes da chamada a tnot.

  22. Herança • Tipos • Herança Estrutural • Propagação das restrições de tipos de métodos (assinaturas) de uma superclasse para suas subclasses. student::person. person[name=>string]. ?- student[name => X] X = string. • Herança Comportamental • Propagação do resultado da aplicação de um método de uma classe para suas instâncias e subclasses • Métodos herdáveis são indicados por *-> e *->> • Permite overriding  Não monotônica

  23. Herança Comportamental • Exemplo de comportamento não-monotônico elephant[color *-> gray; group *-> mammal]. royalElephant :: elephant. clyde : royalElephant. ?- clyde[color->X]. X/gray royalElephant[color *-> white]. ?- clyde[color->X]. X/white

  24. Herança Comportamental • Caso mais complexos envolvem herança múltipla ou herança junto com dedução • Exemplo: b[m *->> c]. a : b. a [m ->> d] :- a[m ->> c]. • Podemos deduzir que a[m->{c,d}] • Não podemos deduzir nada • F-logic recomenda a 1ª interpretação; FLORA utiliza a 2ª • a 1ª é muito difícil de implementar utilizando-se um mecanismo de dedução top-down.

  25. Metaprogramação • Sintaxe de F-logic permite metaprogramação naturalmente %% Todas as classes que John é membro ?- john : X. %% Todas as superclasses de student ?- student :: X • Metavariável: pode ser instanciada com métodos de qualquer aridade • Sintaxe: @M (M segue a sintaxe de nome de variável) • =.. é usado para transformar Metavariáveis em uma lista contendo o nome do métodos e seus argumentos (bidirecional) • @M representa um método (não um objeto) não pode ser passada diretamente como argumento para predicados e métodos

  26. Exemplo1: Copia os métodos de aridade 2 de o1 para o2 :- import length/2 from basics. o1[m1@(a1) -> r1]. o1[m2@(b1, b2) -> r2]. o1[m3 -> r3]. o1[m4@(c1, c2, c3) -> r4]. o2[@M -> R] :- o1[@M -> R], @M =..[Mth|Args], length(Args, 2). Execução ?- o2[@M -> R]. @M = m2@(b1, b2) R = r2 Yes. Exemplo2: Usando =.. para passar Metavariáveis como argumentos ?- mary[@Met -> V], @Meth =.. Param, foo(Param). foo(P) :- @M =.. P, abc[@M ->> 123]. Metaprogramação: exemplos

  27. Verificação de tipos • FLORA não automaticamente verifica conformidade das instâncias e sub-classes com as assinaturas de classes. • Metaprogramação permite implementar essa verificação em poucas regras scalarTypeIncorrect(O, M, R) :- O[X -> R], O:C, C[X=>D], tnot(R:D). ?- scalarTypeIncorrect(obj, method, Result). • Útil para checar dados semi-estruturados.

  28. Comparações: exemplo dos estudantes/cursos • Consultas • Nome dos estudantes junior que fizeram os cursos cs101 e cs143 • Nome e nota dos estudantes junior que fizeram o curso cs131 nota maior que 3.0 • Tabelas

  29. FLORA • Definição joedoe:student[name->”Joe Doe”;major->cs; year->senior; took->>{[cs123, 2.7]}]. jimjones:student[name->”Jim Jones”; major->cs;year->junior; took->>{[cs101, 3.0], [cs143, 3.3]}]. jimblack:student[name->”Jim Black”; major->ee;year->junior; took->>{[cs143, 3.3], [cs101, 2.7])]. • Consultas _:student[name->X; took->>{[cs143, _], [cs101, _]}]. _:student[name->X; year->junior; took->>[cs131, Y]], Y > 3.0.

  30. DATALOG • Definição student(‘Joe Doe’, cs, senior). student(‘Jim Jones’, cs, junior). student(‘Jim Black’, ee, junior). took(‘Joe Doe’, cs123, 2.7). took(‘Jim Jones’, cs101, 3.0). took(‘Jim Jones’, cs143, 3.3). took(‘Jim Black’, cs143, 3.3). took(‘Jim Black’, cs101, 2.7). • Consultas student(Name, _, junior), took(Name, cs101, _), took(Name, cs143, _). took(Name, cs131, Grade), Grade > 3.0, student(Name, _, junior).

  31. Definição Criação das tabelas CREATE TABLE student (Name char(20),Major char(2),Year int); CREAT TABLE took (Name char(20),Course char(5),Grade decimal(2,1)); Adição dos valores INSERT INTO student VALUES <tuplas>; INSERT INTO took VALUES <tuplas>; Consultas SELECT t.NameFROM took t, took u, student sWHERE t.Course = ‘cs101’ AND u.Course = ‘cs143’ AND t.Name = u.Name AND s.Year = ‘junior’ AND s.Name = t.Name SELECT t.Name, t.GradeFROM took t, student sWHERE t.Course = ‘cs131’ AND s.Year = ‘junior’ AND s.Name = t.Name AND s.Grade > 3.0 SQL

  32. Vantagens de FLORA sobre LIFE distinção classe/objeto herança (método herdável/não-herdável atributo de classe regra mólecula-F :- mólecula-F; em life não há regra do tipo -term :- -term, só pred(-term) :- pred(-term) Metaprogramação Integração quase completa com o XSB e seus módulos Vantagens de LIFE sobre FLORA 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) programação por restrições poderosa DCG integrada FLORA x LIFE

More Related