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

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

Banco de Dados Dedutivos Orientados a Objetos e FLORA Sérgio Queiroz CIn - UFPE Recife, dezembro de 1999.

Apresentações semelhantes


Apresentação em tema: "Banco de Dados Dedutivos Orientados a Objetos e FLORA Sérgio Queiroz CIn - UFPE Recife, dezembro de 1999."— Transcrição da apresentação:

1 Banco de Dados Dedutivos Orientados a Objetos e FLORA Sérgio Queiroz srmq@di.ufpe.br CIn - UFPE Recife, dezembro de 1999

2 Roteiro * 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

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 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 e Late Binding Completude computacional Extensibilidade Características gerais de BDs 3 Persistência 3 Gerenciamento de memória secundária 3 Concorrência 3 Recuperação 3 Consultas Ad-hoc

5 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 BDDOO

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 t Objetos complexos; t Identidade de objetos (oid); t Herança; t Polimorfismo; t Encapsulamento; t etc. Apropriada para definir, consultar e manipular esquemas de bancos de dados

8 FLORID e FLORA 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

9 BD Acadêmico em F-Logic: hierarquia “é um” youngmidaged yuppie 30 40 20 degree ms phd report article cacm jacm codd70 flogic94 person student empl child(person) john sally facultymanager phil mary bob child(john) alice dept cs1 cs2 datatype integer string "CS" "Mary" "Bob" 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] 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 Sintaxe de F-logic 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(X 1,...,X n ) * O : C O instância de C * C :: D C subclasse de D * Hierarquia de classe e objetos não precisa ser um reticulado

15 Sintaxe de F-logic: metodos e assinaturas Fórmulas atômicas (cont.) * O[M->R 0 ] Método escalar M(O) = R 0 * O[M->>{R 1,..., R n }] Método multivalorado M * O[M@(Arg1,..., ArgN) -> R 0 ] 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.

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 t isaac:man. t isaac[father->abraham]. t isaac[son->>{jacob}]. t isaac[son->>{esau}]. * F-moléculas F-átomos podem ser aninhado em F-moléculas t C::D ou O:C, onde C, D e O são termos-id. t Uma molécula da forma O[lista de métodos separadas por ;]. t 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. t 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->R o ] O..M  O[M->>{R i }] * Presente em outras linguagems Ex.: cars = john.cars(); Normalmente só é possível uma dimensão t 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 * 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]. 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

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 t 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 t Propagação do resultado da aplicação de um método de uma classe para suas instâncias e subclasses t Métodos herdáveis são indicados por *-> e *->> t 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ª t 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 Metaprogramação: exemplos * 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].

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 SQL * 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 ; INSERT INTO took VALUES ; * Consultas SELECT t.Name FROM took t, took u, student s WHERE 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.Grade FROM took t, student s WHERE t.Course = ‘cs131’ AND s.Year = ‘junior’ AND s.Name = t.Name AND s.Grade > 3.0

32 FLORA x LIFE * 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

33 O 2 QL: definição do BD **lixo** add class Part type tuple(name:string) method price():float, init(): Part is public, atomic(): Boolean is public, display_price(): is public; public read name in class Part; add class Atomic_part inherits Part type tuple(price: float, mass: float) method price(): float, atomic(): Boolean is public; add class Derived_part inherits Part type tuple(inc_price: float, incr_mass: float, subparts: set(tuple(part:Part, qty:integer)) method price(): float; add class Set_of_parts type set(Part) method display() is public, add_new_part() is public; public * in class Set_of_parts; add name set_of_parts: Set_of_parts; execute co2 {set_of_parts = new(Set_of_parts);}

34 O 2 QL: consultas **lixo**  Tarefa 1 select part from part in set_of_parts where ([part atomic] and (part price()] > 100)) * Tarefa 2 body price(): float in class Atomic_part co2 {return(self -> price);} body price(): float in class Derived_part co2 { float p; o2 tuple(part: part, qty:integer) subpart; p = self->subparts) for (subpart in self -> subparts) p += ([subpart.part price]*subpart.qty); return(p); }  Tarefa 3 body display_price() in class Part co2 { char * mes; int pid; mes = (char*) malloc(30); sprint(mes, “The price of a %s is %d”, self->name, self->name, [self price()]); [Dialoger message(mes)]; }


Carregar ppt "Banco de Dados Dedutivos Orientados a Objetos e FLORA Sérgio Queiroz CIn - UFPE Recife, dezembro de 1999."

Apresentações semelhantes


Anúncios Google