Banco de Dados Dedutivos, Banco de Dados Dedutivos, Programação em Lógica, Programação em Lógica,
Banco de Dados Dedutivos Banco de Dados Dedutivos Orientado a Objetos e FLORIDOrientado a Objetos e FLORID
Departamento de InformáticaUFPE
Jeferson Valadares([email protected])
Recife, fevereiro de 1999
RoteiroRoteiro
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
Linguagens de consulta de banco de Linguagens de consulta de banco de dadosdados
xxLinguagens de programaçãoLinguagens 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
Linguagens de consulta de banco de Linguagens de consulta de banco de dadosdados
xxLinguagens de programaçãoLinguagens 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
Banco de dados dedutivos e Banco de dados dedutivos e programação em lógicaprogramaçã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
Orientação a objetosOrientaçã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
Banco de dados orientado a objetos Banco de dados orientado a objetos (BDOO)(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
Banco de dados orientado a objetosBanco 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
Banco de dados orientado a objetosBanco 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
Banco de dados dedutivo orientado a Banco de dados dedutivo orientado a objetos (BDDOO)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
F-logic e FLORIDF-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
O banco de dados acadêmico em FLORIDO 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:datatyp
e• string:datatype• “CS”:string• “Mary”:string• “Bob”:string• ms:degree• phd:degree
O banco de dados acadêmico em FLORIDO 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”]]
O banco de dados acadêmico em FLORIDO 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]
O banco de dados acadêmico em FLORIDO 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]
O banco de dados acadêmico em FLORIDO 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]
O banco de dados acadêmico em FLORIDO 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].
ObjetosObjetos
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
Nomes de objetosNomes 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”
MétodosMé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}].
MétodosMé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].
MétodosMétodos
Consultas com métodos multivaloradas• ?- mary [friends->>X]
X/bobX/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
Átomos-FÁ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}].
Moléculas-FMolé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
ClassesClasses
Á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].
AssinaturasAssinaturas
Á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=>( )].
HerançaHeranç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]
Herança e regrasHeranç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
OverridingOverriding
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
Predicados e Átomos-PPredicados 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
Átomos-PÁ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)].
RegrasRegras
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
ConsultasConsultas
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
Variáveis “don’t care”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
ReferênciasReferê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