Title: Banco de Dados Dedutivos, Programa
1Banco 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_at_di.ufpe.br)
- Recife, fevereiro de 1999
2Roteiro
- 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
3Linguagens 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
4Linguagens 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
5Banco 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
6Orientaçã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
7Banco 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
8Banco 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
9Banco 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
10Banco 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
11F-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
12O banco de dados acadêmico em FLORID
- A hierarquia é-um
- emplperson
- studentperson
- child(person)person
- facultyempl
- managerempl
- yuppieyoung
- yuppiemidaged
- articlereport
- cacmarticle
- jacmarticle
- johnstudent
- johnempl
- sallystudent
- sallyempl
- alicechild(john)
- maryfaculty
- bobfaculty
- bobmanager
- philempl
- 20young
- 30yuppie
- 40midaged
- codd70cacm
- flogic94jacm
- cs1dept
- cs2dept
- integerdatatype
- stringdatatype
- CSstring
- Marystring
- Bobstring
- msdegree
- phddegree
13O 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-gt Bob age-gt40 affiliati
on-gtcs1dname-gt CS mngr
-gtbob assistants-gtgt john, sally - 3. Marys highest degree is an MS.
- 4. She works at the CS department and is friend
to Bob and Sally. - mary name-gt Mary highestDegree-gtms
friends-gtgtbob, sally affiliation-gtcs2dnam
e-gtCS
14O 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 facultys boss is both a faculty and a
manager. - faculty bossgt(faculty, manager) agegtmidag
ed highestDegreegtdegree papers-gtgtart
icle highestDegree-gtphd avgSalary-gt5
0000
15O 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 namegtstring friendsgtgtperson
childrengtgtchild(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 affiliationgtdept bossgtempl j
ointWorks_at_emplgtgtreport
16O 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 assistantsgtgt(student, empl) mngrgtemp
l - Regras dedutivas
- 10. A boss is an employee who is the manager of
another employee of the same department. - Eboss-gtM - Eempl Ddept
Eaffiliation-gtDmngr-gtMempl - 11. A joint work is a paper that is written by
two faculties. - X jointWorks_at_Y-gtgtZ - Yfaculty
Xfaculty Y papers-gtgtZ X papers-gtgtZ
17O banco de dados acadêmico em FLORID
- Consultas
- 0a Who are the midaged employees of the CS
department and who are their boss? - ?- Xempl X boss-gt Y age-gtZmidaged
affiliation-gtDdname-gtCS. - 0b Who published jointly with Mary in the
Journal of the ACM? - ?- maryjointWorks_at_Y-gtgtjacm90.
- 0c Where did Mary published joint work with
Phil? - ?- maryjointWorks_at_phil-gtgtZ.
18Objetos
- 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
19Nomes 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
20Mé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 - bobboss-gtjohn.
- Métodos multivalorados (podem resultar em mais de
um objeto) - maryfriends-gtgtbob,sally.
21Métodos
- A posição resultado de um método multivalorado
pode ser o conjunto vazio - bobfriends-gtgt .
- pode também ser vista como uma declaração do
método friends - Métodos com parâmetros
- mary jointWorks_at_(phil)-gtgtjacm90,cacm92
jointWorks_at_(jacques)-gtgtaaai92,
cacm92. - mary jointWorks_at_(phil,1)-gtgtjacm90 jointWor
ks_at_(phil,2)-gtgtcacm92.
22Métodos
- Consultas com métodos multivaloradas
- ?- mary friends-gtgtX 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
- ?- maryfriends-gtgtbob,sally. true
- ?- maryfriends-gtgtbob. true
- ?- maryfriends-gtgt . true
23Átomos-F
- Expressa exatamente uma propriedade de um objeto
(a que classe ele pertence, a especificação de um
método) - bobempl.
- bobboss-gtgtjohn.
- bobboss-gtgtsally.
24Molé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 - bobemplboss-gtgtjohn,sally.
- Moléculas-F sem propriedades
- sally .
- Açúcar sintático da linguagem
25Classes
- Átomos-F do tipo é-um classe à qual o objeto
pertence - johnstudent
- sallyempl
- Átomos-F de subclasse relação de subclasse entre
duas classes - emplperson
- facultyempl
- F-logic também suporta overloading de métodos
- empl jointWorks_at_emplgtgtreport.
- empl jointWorks_at_(empl, integer)gtgtreport.
26Assinaturas
- Á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 - facultybossgt(faculty).
- facultybossgt(manager).
- personfriendsgtgtperson.
- empljointWorks_at_emplgtgtreport.
- deptassistantsgt(student, empl).
- Pode-se também declarar métodos sem restrições de
tipo - personbelieves_ingt( ).
27Heranç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 - personbelieves_in-gtgod
- bob believes_in-gtgod
- john believes_in-gtgod
- empl believes_in-gtgod
28Herança e regras
- Resolução da herança
- johnking.
- peterking.
- kinglives-gtpalace.
- peterlives-gtabroad - johnlives-gtpalace.
- johnlives-gtabroad - peterlives-gtpalace.
- ?- sys.eval.
- Begin semi-naive evaluation
- End evaluation
- ?- Xlives-gtY.
- Answer to query ?- Xlives -gt Y.
- X/john Y/palace
- X/peter Y/abroad
- 2 output(s) printed
29Overriding
- Regras lógicas tem prioridade sobre a herança
- abrahampersonbelieves_in-gtgod
descendant-gtgtisaacperson. - ahabperson.
- personbelieves_in-gtbaal.
- Xbelieves_in-gtgod - abrahamdescendant-gtgtXpers
on. - godloves-gtgtX - Xbelieves_in-gtgod.
- ?- sys.eval.
- Begin semi-naive evaluation
- End evaluation
- ?- godloves-gtgtX.
- Answer to query ?- godloves -gtgt X.
- X/abraham
- X/isaac
- 2 output(s) printed
30Predicados 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 - maryfriends_with-gtgtbob.
- bobempl.
- maryjointWorks_at_(bob)-gtgtjacm94.
- Similarmente às moléculas-F, moléculas-P podem
ser construídas aninhando-se átomos-F ou
moléculas-F em átomos-P - friends(maryaffiliation-gtcs1, bobempl).
- Átomos-F e moléculas-F podem ser aninhados em
átomos-P, mas o inverso não é verdadeiro - empl(bob)friends(bob,sally).
32Regras
- 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á - Xmanager-gtgtY - Xboss-gtgtY.
- Formam o BD Intencional
33Consultas
- Podem ser consideradas um tipo de regra especial
com a primeira parte vazia - ?- maryfriends-gtgtYempl.
- 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
34Variáveis dont care
- Variáveis para resultados intermediários que não
aparecem no resultado - ?- Xemplboss-gt_Y, _Yfriends-gtgtsally.
- A variável _
- cada ocorrência desta variável é considerada uma
variável dont care distinta
35Referê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