Banco de Dados Dedutivos
Eduardo J Marcondes
Marcelo Brischke
Banco de Dados Dedutivos
• Área de intersecção entre banco de dados,
lógica e inteligência artificial.
• Capacidade de definir (deduzir) regras a
partir de fatos armazenados em sua base de
dados.
BD Dedutivo X BD inteligente
• Inteligentes
– Geralmente assumem que os dados requeridos estão na memória principal.
– Os dados geralmente são extraídos por aplicações inteligentes.
• Dedutivos
– Preparados para trabalhar com memória secundária.
BDs Dedutivos
• Linguagem Declarativa;
• Mecanismo de inferência;
• Regras e fatos;
• Prolog e Datalog;
Notação Prolog / Datalog
• Baseada em predicados com argumentos;
Exemplo
• Facts • supervise(franklin,john). • supervise(franklin,ramesh). • supervise(franklin,joyce). • supervise(franklin,alicia). • supervise(jennifer,ahmad). • supervise(jennifer,franklin). • supervise(jennifer,jennifer). • ... • Rules • superior(X,Y):-supervise(X,Y). • superior(X,Y):-supervise(X,Y),superior(Z,Y). • subordinate(X,Y):-superior(Y,X). • Queries • superior(james,Y)? • superior(james,joyce)? james franklin jenniferRegra
• superior(X,Y):-supervise
(X,Z),superior(Z,Y)
Notação Datalog
• atomic formulas;
• literais da forma p(a1,a2,a3,...,an);
• Aridade;
• Predicados embutidos:
– Predicados de comparação binária:
• <(less), <=(less_or_equal), >(greater), >= (greater_or_equal) ;
– Predicados de comparação:
Interpretação de Regras
• Prova - teórica;
• Modelo-teórico;
Prova - teórica
1. superior(x,y):- supervise(x,y) (regra 1)
2. superior(x,y):- supervise(x,z),superior(z,y) (regra 2)
3. supervise (Jennifer,ahmad) (axioma fundamental)
4. supervise(james,jennifer) (axioma fundamental)
5. superior(jennifer,ahmad) (aplicando a regra 1 em 3)
Modelo - teórico
• Regras: – Superior(x,y):-supervise(x,y) – Superior(x,y):-supervise(x,z),superior(z,y) • Interpretação: • Fatos Conhecidos: – Supervise(franklin,john) é verdadeiro – Supervise(franklin,ramesh) é verdadeiro – Supervise(franklin,joyce) é verdadeiro – Supervise(jennifer,alicia) é verdadeiro – Supervise(jennifer,ahmad) é verdadeiro – Supervise(james,franklin) é verdadeiro – Supervise(james,jennifer) é verdadeiro– Supervise(x,y) é falso para todas as outras possíveis combinações (x,y)
• Fatos Derivados: – Superior(franklin,john) é verdadeiro – Superior(franklin,ramesh) é verdadeiro – Superior(franklin,joyce) é verdadeiro – Superior(jennifer,alicia) é verdadeiro – Superior(jennifer,ahmad) é verdadeiro – Superior(james,franklin) é verdadeiro – Superior(james,jennifer) é verdadeiro – Superior(james,john) é verdadeiro – Superior(james,ramesh) é verdadeiro – Superior(james,joyce) é verdadeiro – Superior(james,alicia) é verdadeiro – Superior(james,ahmad) é verdadeiro
Mecanismos de Inferência
Básicos para programas lógicos
• Button – up (forward chaining)
– O motor de inferência inicia com os fatos e aplica as regras para gerar novos fatos.
• Top – Down (backward chaining)
– Inicia com o objetivo do predicado da query e
busca os fatos coincidentes com as variáveis no banco de dados.
Programas Datalog e suas
avaliações
• Fato-definidos (ou relações);
• Regras-definidas (ou visões).
Segurança dos programas
• Um programa ou uma regra é seguro se gerar
um grupo finito de fatos.
• Big_salary(Y) :- Y>60000
• Big_salary(Y) :- employee(X), salary(X,Y), Y>60000 • Big_salary(Y) :- Y>60000, employee(X), salary(X,Y)
Uso das Operações Relacionais
• Baseado no modelo relacional;
• Assume que os predicados( relações de
fatos e resultados de query) especificam
grupos de tuplas;
• O poder adicional está nas queries
recursivas e visões baseadas em queries
recursivas.
Avaliação de Queries
Não-Recursivas Datalog
• É realizada uma tradução da consulta Query
para uma expressão relacional.
Conceitos de Queries Recursivas
em Datalog
• Técnica da avaliação pura: Criando um
plano de avaliação de query para produzir a
resposta para a query.
• Técnica da regra reescrita: Otimiza o plano
para uma estratégia mais eficiente.
Conceitos de Queries Recursivas
em Datalog
• linearmente recursiva;
– Sg(X,Y) :-parent(X,XP), parent(Y,YP), sg(XP,YP)
• linearmente recursiva à direita.
• linearmente recursiva à esquerda.
– Direita: ancestor(X,Y):- parent(Z,Y), ancestor(X,Z) – Esquerda: ancestor(X,Y):- ancestor(X,Z),parent(Z,Y)
Conceitos de Queries Recursivas
em Datalog
• Estratégia ingênua
– É um método iterativo, onde para cada iteração todas as regras são aplicadas para todo o grupo de tuplas, gerando assim todas as implícitas
tuplas.
• Estratégia Semi-Ingênua
– Em cada iteração ao invés de gerar todas as possíveis tuplas, são geradas apenas as que ainda não existem.
Estratégia Maravilhosa
• Não usa a relação inteira correspondente ao
predicado intencional mas sim um pequeno
grupo desta relação.
• Ex.:
– sg(X,Y) :- flat(X,Y).
– sg(X,Y) :- up(X,U), sg(U,V), down(V,Y). Query: sg(jonh, Z)
Estratégia Maravilhosa
• top-down
– Não pesquisa caminhos irrelevantes. – Difícil de implementar (looping infinito)
• bottom-up
– Pesquisa caminhos irrelevantes.
• A estratégia maravilhosa une o melhor dos
dois métodos.
Técnica Maravilhosa
• A técnica foca o objetivo inerente ao método top-down sem os problemas de looping infinito, fácil término do teste e
avaliação eficiente do bottom-up.
Sg(X,Y) :- magic - sg(X,Y), flat(X,Y).
Sg(X,Y) :- magic- sg(X,Y), up(X,Y), sg(X,Y), down(X,Y). Magic-sg(U) :- magic-sg(X), up(X,U).
Negação Estratificada
• modelo mínimo
• Ex.:
– p(a) :- not p(b)
– tem dois mínimos modelos: {p(a)} e {p(b)}
• Um programa é estratificado se não houver
recursão junto com a negação.
Negação Estratificada
r1 : ancestor(X,Y) :- parent(X,Y).
r2 : ancestor(X,Y) :- parente(X,Z), ancestor(Z,Y).
Negação Estratificada
• Negação localmente estratificada:
– Um programa P é localmente estratificado se para um determinado banco de dados, quando forem substituídas suas variáveis em todos os possíveis caminhos, o resultado não contenha recursão junto com negação.
Sistemas de Banco de Dados
Dedutivos
• Sistema LDL
• NAIL!
O Sistema LDL
• Logic Data Language (LDL) é um projeto da Microelectronics and Computer Technolology
Corporation (MCC)
• Objetivos:
– Desenvolver um sistema que estende o modelo relacional mas explora algumas características do RDBMS;
– Aumentar a funcionalidade de um DBMS para que além de sua funcionalidade dedutiva ele suporte também
aplicações de propósito gerais.
• Tenta combinar a capacidade do Prolog com a funcionalidade dos DBMS de uso geral.
NAIL!
• NAIL! (Not Another Implementation of Logic!) é um projeto iniciado pela Universidade de Stanford em 1985 ;
• Objetivo inicial era o estudo de otimizações da lógica usada em sistemas orientados a banco de dados, para suportar otimizações de execução do Datalog sobre RDBMS;
• Em colaboração com o grupo MCC foi responsável por:
– Grupos maravilhosos;
– Primeiro trabalho em recursão regular;
– Lida com negação e agregação em regras lógicas;
Coral
• Desenvolvido pela Universidade de Wisconsin at Madison; • Baseado no LDL;
• Pode ser visto como uma linguagem de programação para banco de dados que combina importantes características de SQL e Prolog;
• Coral implementa um grande número de otimizações:
– Templates maravilhosos para queries recursivas; – Ativações de projeções;
– Ativações especiais para programas lineares; – Boa interface com C++;
– Extremamente extensível.
• Uma característica interessante é o pacote de extensão, que permite ao usuário examinar graficamente como um fato é gerado.
Aplicações de Banco de Dados
Dedutivos Comerciais
• Alguns exemplos de domínios de aplicações comerciais / industriais baseadas no banco de dados dedutivo LDL:
– Modelagem empresarial: sistema que modela estrutura, processos e restrições organizacionais que gera como resultado um modelo ER. Utilizado para o Design de novas aplicações.
– Teste de hipóteses e mineração de dados: este domínio envolve a formulação de hipóteses traduzidas em regras LDL. Esse sistema foi aplicado na análise de dados do genoma.
– Reuso de software: Obtém dados de códigos de módulos em C
usados em sistemas e utiliza regras que podem exportar e importar funções para reaproveitamento de software.