1 / 35

Frame Logic: uma linguagem lógica orientada a objetos para construção e consultas dedutivas de ontologias

Frame Logic: uma linguagem lógica orientada a objetos para construção e consultas dedutivas de ontologias. Jacques Robin e Franklin Ramalho CIn-UFPE. Frame Logic (F-Logic). Linguagem integrando 2 paradigmas: programação em lógica programação orientada a objetos

ivy
Download Presentation

Frame Logic: uma linguagem lógica orientada a objetos para construção e consultas dedutivas de ontologias

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. Frame Logic: uma linguagem lógica orientada a objetos para construção e consultas dedutivasde ontologias Jacques Robin e Franklin Ramalho CIn-UFPE

  2. Frame Logic (F-Logic) • Linguagem integrando 2 paradigmas: • programação em lógica • programação orientada a objetos • em uma perspectiva de banco de dados • Originada em uma pesquisa teórica sobre semântica formal das linguagens orientado a objetos • tanto de programação (Smalltalk) • quanto de representação do conhecimento (Sistemas de frames) • quanto de banco de dados (ODMG) • Semântica formal declarativa baseada na lógica de Horn da 1a ordem

  3. Partes de um programa F-Logic 1. Declaração da hierarquia de classes e objetos extend de Java regras definindo um predicado sub em Prolog 2. Definição de objetos new de Java  regras definindo um predicado is-a em Prolog 3. Declaração das assinaturas das classes  tipagem dos atributos e métodos em Java  premissas adicionais de tipagem de argumentos de predicados em Prolog 4. Declaração das regras de dedução entre atributos e métodos das classes  definições de métodos em Java  a regras de dedução entre predicados em Prolog 5. Consultas lógicas sobre atributos de objetos  consultas lógicas sobre predicados Prolog

  4. Ontologia Especialista – um exemplo acadêmico em F-logic (Flora)

  5. Ontologia acadêmica: hierarquia de conceitos root[]. person :: root. employee :: person. academicstaff :: employee. researcher :: academicstaff. phdstudent :: researcher. lecturer :: academicstaff. administrativestaff :: employee. secretary :: administrativestaff. technicalstaff :: administrativestaff. student :: person. phdStudent :: student.

  6. Ontologia acadêmica: restrições sobre atributos dos conceitos employee[ affiliation =>> organization, worksatproject =>> project, headOf =>> project, headOfgroup =>> researchgroup]. academicstaff[ supervises =>> phdstudent]. researcher[ researchinterest =>> researchtopic, memberof =>> researchGroup, cooperateswith =>> researcher]. secretary[ secretaryof =>> researchgroup]. student[studiesat =>> university]. phdstudent[ supervisor =>> academicstaff]. person[ photo =>> string, firstname =>> string, middleinitial =>> string, lastname =>> string, name =>> string, address =>> string, email =>> string, phone =>> string, fax =>> string, publication =>> publication, organizerorchairof =>> event, memberOfPC =>> event, editor =>> publication].

  7. Ontologia acadêmica: instâncias jacquesrobin:lecturer[ name ->> 'Jacques Robin', firstname ->> 'Jacques', lastname ->> 'Robin', affiliation ->> ufpe, worksatproject =>> swaip]. franklinramalho:phdstudent[ name ->> 'Franklin de Souza Ramalho', firstname ->> 'Franklin', lastname ->> 'Ramalho', address ->> 'Joao Francisco Lisboa, 121, bl-20, apto 304 varzea, Recife PE, Brazil', email ->> 'fsr@cin.ufpe.br', phone ->> 34535677, publication ->> {ir2001, tese2000}, studiesat ->> ufpe, supervisor->>jacquesrobin].

  8. Ontologia acadêmica: consultas X:lecturer,X[name->>'Jacques Robin'],Y:phdstudent,Y[supervisor->>X]. X = jacquesrobin Y = franklinramalho flora2 ?- franklinramalho[publication->>X]. X = ir2001 X = tese2000 flora2 ?- X:phdstudent. X = franklinramalho

  9. Ontologia acadêmica: regras e consultas dedutivas Y:academicstaff[supervises->>X] :- X:phdstudent[supervisor->>Y]. jacquesrobin:lecturer[ name ->> 'Jacques Robin', firstname ->> 'Jacques', lastname ->> 'Robin', affiliation ->> ufpe, worksatproject ->> swaip supervises->> franklinramalho]. Consulta : X:lecturer[name->>'Jacques Robin', supervises->>Y]. X = jacquesrobin Y = franklinramalho

  10. F-Logic: generalização de vários formalismos de BD, IA e programação F-Logic Representação de Conhecimento com Objetos e Lógica: Lógicas Descritivas Modelo de Dados Objeto- Relacional: SQL’99 Modelo de Dados Dedutivo: Datalog Programação em Lógica: Prolog Representação de Conhecimento com Regras: Sistemas de Produção, Shell de Sistemas Especialistas Modelo de Dados Orientado a Objetos: OQL Representação de Conhecimento com Objetos: Frames, Redes Semânticas Representação de Conhecimento com Lógica: Provadores de Teorema Modelo de Dados Relacional: SQL´92 Programação Orientada a Objeto: Java

  11. Programação com Linguagem Declarativa de Alto-Nível: • IA e programação funcional, filosofia RUDE • prototipagem rápido (desenvolvimento em espiral) • especificação = implementação • robustez • escalabilidade, reusabilidade, desenvolvimento distribuído • metodologia completa desde requisitos até teste • formalismos e CASE não divulgados no mainstream • Métodos Formais: • filosofia SPIV • robustez • metodologia completa desde requisitos até teste • prototipagem lentíssimo • impedance mismatch entre especificação e implementação • escalabilidade • desenvolvimento distribuído • formalismos e CASE não divulgados no mainstream • Metodologias OO: • filosofia RUP • metodologia completa desde requisitos até teste • escalabilidade, reusabilidade, desenvolvimento distribuído • formalismos e CASE divulgados no mainstream • - impedance mismatch entre especificação e implementação para parte comportamental • prototipagem lento • robustez (sem semântica) F-Logic e Engenharia de Ontologias Engenharia de Ontologias

  12. Programação com Linguagem • Declarativa de Alto-Nível: • prototipagem rápido (desenvolvimento em espiral) • especificação = implementação • Outras vantagens: • Máquinas de inferência built-in para dedução, abdução e indução • Programação AutomáticaEstrutural e Comportamental • a partir de: • modelos UML • Projeto SWAIP • exemplos de entrada/saída • Projeto Cigolf (Aprendizagem) • Métodos Formais: • robustez • Metodologias OO: • metodologia completa desde requisitos até teste • escalabilidade, reusabilidade, desenvolvimento distribuído • formalismos e CASE divulgados no mainstream F-Logic e Engenharia de Ontologias Programação em Lógica Orientada a Objetosem F-Logic

  13. Aplicações de F-Logic • Engenharia de software: • especificação formal executável orientada a objetos • Inteligência artificial: • representação do conhecimento por meio de regras e hierarquias conceituais • Banco de dados: • BD dedutivas orientada a objetos • integração de dados • integração de codificações • integração de esquemas • integração de BD com modelos de dados diferentes • Web semântica: • Agentes inteligentes de processamento de informação na web • Dedução automática sobre documentos, objetos e dados na web

  14. Flora: F-Logic + HiLog + Transaction Logic Compilador F-Logic para XSB Prolog implementado em Prolog APIs para Java, C, OBDC, Oracle7, XML Domínio público, open source Stony Brook University, New York LoPiX: F-Logic + XPath + XML Implementado em C++, no entanto sem API C++ Domínio público, executável University of Freiburg, Alemanha SiRLI: F-Logic com extensões lógicas (quantificadores existenciais, conectivas) Implementado em Java Comercial, ontoprise.com TRIPLE F-Logic + RDF Compilador para Flora Domínio público Stanford/DFKI Floracle F-Logic + HiLog + Transaction Logic Compilador para Oracle9i Em desenvolvimento no CIn  Implementações de F-Logic

  15. Elementos de um programa F-Logic • Identificadores de objetos (OID) • Átomos-F: • declarações de relações superclasse::subclasse e classe:instância • declarações do valor de um atributo/método de um objeto/classe • declarações de restrições de tipo de um atributo/método de um objeto/classe • Conjuntos em extensão parcial {...,...} • Molécula-F: • agregação de vários átomos-F em uma única expressão • apenas uma abreviação sintática • Átomos-P: • variação sintática para compatibilidade com Prolog • Termo: Átomo-P ou Molécula F • Cláusula lógicas (regras): termo0 :- termo1, ..., termoN. • Consultas: cláusula sem conclusão

  16. Identificadores de objetos (OID)e variáveis lógicas • Identificadores de objetos: constantes simbólicas • Seguindo convenção de programação em lógica: • constantes começam com letra minúscula e contém nenhum caracter especial além de _ • variáveis lógicas começam com letra maiúscula ou _, e podem conter caracteres especiais • Exemplos: • OID: o1, o2, isaac, newton, isaacNewton • Variáveis lógicas: X, Method, _42 • Símbolos funcionais permitem criar: • identificadores de objetos compostos, ex, son(jacob)

  17. Átomos-F: hierarquia de classes e objetos • A hierarquia conceitual de classe e objetos é declarada por átomos-F da forma: • subclass::superclass, ou • objeto:classe • ou seja • OIDdeObjetoComoClass :: OIDdeObjetoComoClass, e • OIDdeObjetoComoObjeto : IODdeObjetoComoClass • Em F-Logic classes são também objetos

  18. Átomos-F: atributos e métodos • F-Logic não faz a distinção entre atributos e métodos: ambos são declarados em átomos-F da forma: • objectID[methodName - returnValue] para métodos (atributos) mono-valorados • objectID[methodName - {returnValueSet}] para métodos (atributos) multi-valorados • { } é o operador de agregação em conjunto do F-Logic • Exemplos: • o átomo-F isaac[father - abraham] define o valor do método mono-valorado father do objeto issac • o átomo-F abraham[son - {isaac,ismael}] define dois valores possíveis para método multi-valorado son do objeto abraham • A semântica dos métodos multivalorados é a inclusão de conjuntos não a igualdade

  19. Átomos-F: métodos parametrizados • Métodos parametrizados são declarados em átomos-F da forma: • objectID[methodName@(ParameterList) - returnValue], ou • objectID[methodName@(ParameterList)- returnValue] • Exemplo: • o átomo-F jacob[son@(rachel) - {joseph, benjamin}] especifica que os objetos joseph e benjamin são dois valores possíveis para o método son do objeto jacob parametrizado pelo objeto rachel • Um parâmetro pode ser um oid ou uma variável lógica

  20. Átomos-F: assinaturas de classes e restrições de tipos dos métodos • Restrições de tipos sobre os valores de métodos de classes são especificadas com átomos-F da forma: • className[methodName  className] • className[methodName@(parameterList)  className] • className[methodName  className], ou • className[methodName@(parameterList)  className] • Exemplos: • person[father  man]. • man[daughter@(woman)  woman].

  21. Variáveis lógica em átomos-F • Variáveis lógicas podem aparecer em qualquer posição de um átomo-F: • posição de nome de classe, C::thing. • posição de nome de objeto, X[son@(rachel)- joseph], O:C. • posição de método, jacob[M@(rachel)- joseph], • posição de parâmetro de método, jacob[son@(Y)- joseph], • posição de valor de método, jacob[son@(rachel  Z). • Uso simultâneo de variáveis lógicas em várias posições permite meta-programação e consultas a meta-dados • ex, O[M@(P) - V]

  22. Moléculas-F • Várias átomos-F podem ser agregados e aninhados em especificações concisas • Propriedades conjuntivas são agregadas dentro de [] separadas por ; • Propriedades disjuntivas são agregadas dentro de {} separadas por , • () são usadas resolver ambigüidade devido ao aninhamento • Exemplo: • isaac[father- abraham:man[son@(hagar:woman)- ismael]; • mother - sarah:woman]. • Agregada: • isaac[father- abraham]. abraham:man. hagar: woman. • abraham[son@(hagar) - ismael]. isaac[mother - sarah]. • sarah:woman.

  23. Átomos-P e moléculas-P • Predicados da programação em lógica pura (Prolog)podem aparecer em programas F-Logic chamados de átomos-P • Átomos-P permitem: • integração com de programas F-Logic com programas Prolog • modelagem alternativa • Moléculas-F podem ser aninhadas dentro de átomos-F formando moléculas-P: • married(isaac[father- abraham], rebekah:woman). • Átomos-P e moléculas-P não podem ser aninhadas em moléculas-F

  24. Modelagem orientado a relações com átomos-P: married(isaac,rebekah). male(jacob). sonOf(isaac,rebekah,jacob). Modelagem orientado a objetos com átomos-F: isaac[married_to - rebekah]. jacob:man. isaac[son@(rebekah) - jacob]. Modelagens alternativas com átomos-P e moléculas-F

  25. Cláusulas, fatos, regras e programas F-Logic • Cláusulas F-Logic podem ser: • uma molécula-F • uma molécula-P • uma regras com uma molécula (F ou P) em conclusão e uma conjunção de moléculas (F ou P) como premissas • Regras F-Logic são da forma: • headMolecule :- bodyMolecule1, ..., bodyMoleculeN. • Fatos F-Logic extendem fatos Prolog com moléculas-F • Regras F-Logic extendem regras Prolog com moléculas-F na conclusão ou nas premissas • Regras F-Logic implementam corpo dos métodos das classes e objetos • Um programas F-Logic é uma conjunção (implícita) de cláusulas F-Logic

  26. Consultas e expressões de caminhos • Uma consulta F-Logic é uma regra F-Logic sem conclusão, ou seja, uma conjunção de moléculas (F ou P) • Consultas e premissas das regras podem conter expressões de caminhos usando self(this em Java) e o . da orientação a objetos • Integradas com variáveis lógicas, expressões de caminhos permitem especificar consultas complexas com muita concisão • .. é usado para caminhar sobre métodos multivalorados em grafos de objetos • ! e !! são usados para caminhar sobre métodos herdáveis em grafos de objetos

  27. Consulta F-Logic sem caminho de expressão: ?- isaac[father  Y], Y[father  X]. Consulta O2SQL: SELECT X FROM X IN manager FROM Y IN X.vehicles WHERE Y.color = red AND Y.producedBy.city = detroit AND Y.producedBy.president = X Consultas F-Logic com caminho de expressão: ?- isaac.father[father  X]. ?- X:manager..vehicles[color  red] .producedBy[city  detroit; president  X]. Consultas e expressões de caminhos: exemplos

  28. Herança • Ambos valores de métodos (objetos) e restrições de tipos sobre valores de métodos (classes) são herdadas de uma classes para suas subclasses se for declaradas da forma: • className[inheritableMethodName  objectID], • className[inheritableMethodName  objectID], • className[inheritableMethodName  className], ou • className[inheritableMethodName  className]. • F-Logic permite: • sobrescrita de valor herdada • herança múltipla • sobrecarga de métodos

  29. gray:color. white:color. elephant[color  color]. elephant[color  gray]. royalElephant :: elephant. royalElephant[color  white]. clyde : elephant. dumbo : royalElephant. ?- clyde[color  C]. C = gray. ?- dumbo[color  C]. C = white. ?- royalElephant[color  C]. C = white ?- Herança: exemplo

  30. Esquema: hierarquia de classes empreg::pessoa. prof::empreg. assist::empreg. Esquema: assinatura de classes depto[nome => string; empregs =>> empreg; chefe => prof]. pessoa[nome => string; nasc => data; idade => int]. empreg[depto => depto; salario => int]. publi[nome => string, autores =>> {assist,prof}]. prof[publi =>> publi; titulação *-> PhD; salario -> 50000]. assist[publi =>> publi]. data[ano=>int; mes=>int; dia=>int]. Esquema: regras dedutivas X:pessoa[idade -> I] :- I >= 0, I <= 130. meiaIdade(P) :- P:prof. meiaIdade(P) :- P.idade >= 30, P.idade <= 60. X:[jointPubli@Y->> P] :- X:{prof,assist}, Y:{prof,assist}, X[publi ->> P], Y[publi ->>P]. E[chefe->C] :- E:empreg, D:depto, E[depto -> D[chefe -> C:empreg]. D:data :- ... Dados bob:prof[nome -> “Bob”; nasc -> data[ano => 1960; mes => 01; dia => 02]; depto -> di, publi ->> {jacm,cacm}]. mary:prof[nome -> “mary”; titulacao -> mestre depto => di, publi ->> {jacm,cacm}]. phil:assist[nome -> “Phil”, depto => di, publi ->> {cacm}]. john:assist[nome -> “John”, depto => di, publi ->> {jacm}]. sally:assist[nome -> “Sally”, depto => di, publi ->> {jacm}]. jacm:publi[nome -> “JACM”; autores ->> {bob, mary, john, sally}]. cacm:publi[nome -> “CAC”, autores ->> {bob, mary, phil}]. Consultas ?- meiaIdade(E), E:empreg[depto -> di[chefe -> E]]. E = bob. ?- mary[jointPubli@E ->> jacm]. E = bob, E = john, E = sally Exemplo introdutório: um BD acadêmico

  31. F-Logic como linguagem lógica Serviços de dedução: • Fundamentação em uma teoria da prova completa e correta • Motor de inferência para regras dedutivas com: • referências a objetos nas premissas e conclusões • sintaxe de ordem superior • semântica da 1a ordem • unificação de descrições parciais de objetos

  32. Serviços fornecidos: Construtores de conjuntos com semântica de inclusão Operadores de agregação Consultas devolvem todas as respostas de uma vez Consultas uniforme dos dados e dos metadados (esquema) Serviços não fornecidos: Atualizações declarativas Persistência Gerenciamento de grandes conjuntos de dados Gerenciamento de memória secundária Gerenciamento de transações F-Logic como linguagens de consulta e manipulação de BD

  33. Serviços fornecidos: Identificação única, inclusive funcionais Construtores de estruturas complexas ortogonais e extensíveis Hierarquia de classes (esquema) com herança múltipla de estado e comportamento Estado inicial e comportamento default Sobrescrita, sobrecarga e ligação dinâmica Restrições de tipos Serviços parcialmente fornecidos: Completude computacional dependentemente da implementação Verificação e inferência de tipos indiretamente via regras de ordem superior Serviços não fornecidos: Encapsulamento Acesso completo a recursos Gerenciamento de versões F-Logic como linguagem orientada a objetos: serviços fornecidos

  34. Tudo é um objeto: objetos classes atributos valores métodos regras Não há distinção entre atributos e métodos Variável lógica pode aparecer em qualquer posição: objetos classes atributos valores métodos regras F-Logic como linguagem orientada a objetos: características

More Related