F-logic - Université de Genève
Transcription
F-logic - Université de Genève
F-logic Références M. Kifer, G. Lausen. "F-logic: A Higher Order Language for Reasoning about Objects, Inheritance, and Scheme", Proc. SIGMOD Conf, 1989. M. Kifer, G. Lausen,J. Wu. "Logical Foundations of Object-Oriented and Frame-Based Langues". Journal of the ACM, vol. 42, no. 4, 741-843, July 1995. P.-Th. Kandzia, C. Schlepphorst. "Florid - A Prototype for F-logic", in Proc. 12th German Workshop on Logic Programming, Sept. 1997, Munich. Intérêt pour nous Forme Présentation « classique » d’une proposition de langage (syntaxe + sémantique). Fond Langage avec de « bonnes propriétés » (décidabilité, calculabilité, héritage, …). Langage utilisé actuellement en représentation des connaissances. G. Falquet, CUI, Université de Genève 1 de 28 Motivations Bases de données OO : manque de sémantique formelle. Systèmes déductifs : utilisent un modèle de données « plat » ; pas d’identité d’objets; pas d’abstraction de données. Objectifs : bdoo + déduction + traitement des schémas « programmer » les méthodes dans le même formalisme ne pas utiliser une logique du second ordre (trop complexe) mais permettre des « méta-traitements » Une logique pour les systèmes à « cadres ». G. Falquet, CUI, Université de Genève 2 de 28 Idée 1 : treillis des classes/objets T children(john) sally john assistant student children(person) 20 30 40 mary faculty empl person bob "CS" "Mary" string yuppie young midaged ⊥ G. Falquet, CUI, Université de Genève 3 de 28 Classes, objets, relations Pas de distinction classe - objet : tous dans le même domaine Une classe peut être considérée comme un objet => pas besoin de notion de méta-classe Pas de différence entre « instance de » et « sous-classe de » => sous-classe pas de sémantique de sous-ensemble => (à voir) pas de problèmes de définition de l’héritage Notion de « plus défini », donne la relation d’ordre du treillis Treillis => il existe toujours A sup B et A inf B (plus petit (grand)élément supérieur (inférieur) à A et B) Pas de distinction en relations et objets ( ≠ entity - relationship) => un objet peut être vu comme entité ou relation suivant son rôle (position syntaxique) G. Falquet, CUI, Université de Genève 4 de 28 Exemples Faits faculty:bob[name → "Bob", age → 40, works → dept: cs1[dname → "CS", mngr → empl: phil] ] • bob est une instance de faculty • l’attribut name associe bob à "Bob" • etc. faculty: mary[…, friends → {bob, sally}, age → 30, works → dept:cs2[…], …] • attribut multivalué friends • attributs non obligatoires student: sally[age → midaged] • on ne connaît pas l’age exact de sally (valeur moins définie qu’un nombre) G. Falquet, CUI, Université de Genève 5 de 28 Exemples (suite) Information sur les classes (c.f. schémas) faculty[supervisor → faculty, age → midaged] student[age → young] empl[supervisor → empl] Règle E[supervisor → M] <= empl: E[works → dept: D[mngr → empl: M]] Requête empl:X[supervisor → Y, age → midaged:Z, works → D[dname → "CS"]] ? résultats: mary[supervisor → faculty, age → 30, works → cs2] supervisor → faculty est hérité G. Falquet, CUI, Université de Genève 6 de 28 Syntaxe - Id-termes Constantes: ce sont les objets de base (ensemble O) Symboles de fonctions: servent de constructeurs d’objets (ensemble F) Id-termes: composés de fonctions, objets de base et variables (les « object identities ») pere(X) Termes de base (ground terms): id-termes sans variables (ensemble O*) pere(roger) universite(californie) Id-termes non constants ~=> objets construits à partir d’autres G. Falquet, CUI, Université de Genève 7 de 28 Etiquettes Un objet peut jouer le rôle d’étiquette (c.f. nom de relation/attribut/méthode) En tant qu’étiquette un objet peut être fonctionnel ou multivalué (type) Les symboles de fonction sont également typés (types des paramètres et du résultat) Ils peuvent être surchargés: p.ex. f(fonc, multi, fonc) → multi et f(multi, multi, multi) → fonc On peut calculer le type de chaque terme de O* G. Falquet, CUI, Université de Genève 8 de 28 F-termes Ce sont les formules atomiques du langage (i.e. celles qui s’interprètent comme vrai ou faux) F-termes simples P :Q P, Q des id-termes (signifie : Q est un objet de la classe P) F-termes complexes P : Q [F1 → T1, …, Fm → Tm, M1 → {m1,1, …, mk1, 1}, M2 → …] G. Falquet, CUI, Université de Genève 9 de 28 Typage des termes Les variables et constantes n’ont pas de sorte (typage) a [ X → b] ne peut être vérifié statiquement X fonctionnel ou multivaluée ? sémantique : ∀X. a [ X → b] sera toujours interprété comme faux a[E → c, E → {d, e}] est insatisfaisable G. Falquet, CUI, Université de Genève 10 de 28 Treillis sur O* But : Placer les id-termes dans un treillis relation ≤ signifie "moins défini que" Extension (objets) d’une classe : tous les objets au dessus d’elle dans le treillis (plus définis) Bas du treillis = le tout = l’indéfini, Sommet du treillis = le rien (trop défini) T children(john) sally john assistant student children(person) 20 30 40 mary faculty empl person bob "CS" "Mary" string yuppie young midaged ⊥ G. Falquet, CUI, Université de Genève 11 de 28 Etablissement du treillis sur O* 1. On spécifie la relation ≤ sur les objets de base (O) étudiant ≤ john personne ≤ étudiant date ≤ 1.6.2002 etc. 2. On spécifie les classes des arguments et résultats des fonctions de construction voiture(personne) → véhicule propriétaire(date, véhicule) → personne On peut ensuite typer les autres id-termes par inférence de types: propriétaire(1.6.2002, voiture(albert)) → personne On peut vérifier si t ≤ s avec un algorithme (proche de l’algorithme d’unification des termes) G. Falquet, CUI, Université de Genève 12 de 28 Sémantique - Interprétation des termes de O* O* gO est un homomorphisme de treillis conserve l’ordre Ufonc pere(bob) O age mary bob enfants gO Termes de base Umulti Univers des objets G. Falquet, CUI, Université de Genève 13 de 28 Sémantique Interprétation d’un langage en F-logique (constantes, fonctions, termes) U : l’univers des objets domaine d’interprétation, avec une struct. de treillis ≤U U = Ufonc ∪ Umulti (disjoints) Homomorphisme gO : O* → U interprétation des «noms d’objets» par des «vrais» objets gO (Lfonc) ⊆ Ufonc, gO(Lmulti) ⊆ Umulti Application gF : F → Mon(Uk, U) interprétation des noms de constructeurs k-aires par des applications monotones dans U gO (f(t1, …, tk)) = gF(f)(gO(t1), …, gO(tk )). G. Falquet, CUI, Université de Genève 14 de 28 Sémantique - Interprétation des fonctions O* Ufonc pere(bob) age O mary bob enfants gO gF F pere Umulti Fonctions (constructeurs) G. Falquet, CUI, Université de Genève 15 de 28 Sémantique - Interprétation des objets comme étiquettes de fonctions O* Mon(U, U) Ufonc pere(bob) O age mary bob enfants gO jfonc Fonctions monotones Termes de base jmulti Mon(U, 2U ) F pere Fonctions G. Falquet, CUI, Université de Genève Umulti Univers des objets 16 de 28 Interprétation (suite) Interprétation des objets dans leur rôle d’étiquette (relation) jfonc : Ufonc → Mon(U, U) associe une application monotone à chaque objet de U fonc jmulti : Umulti → Mon(U, 2U) associe une application multivaluée monotone à chaque objet de Umulti Interprétation des variables assignation de variables : application v : {variables} → U Interpréation des termes avec variables v(d) = gO(d) /* constante */ v(f(T1, …, Tk)) = gF(f)(v(T1), …, v(Tk)) v(P: Q[…]) = v(Q) G. Falquet, CUI, Université de Genève /* fonction */ /* F-terme */ 17 de 28 Signification d’un F-terme I une interprétation, v une assignation des variables T = P : Q[…, Fi → Ti, …, Gj → {S1, …, Sm}, …] MI, v (T) = vrai si 1) Q est dans la classe P : v(P) ≤ v(Q) 2) pour i = 1, k v(Fi ) ∈ Ufonc /* type correct */ v(Ti ) ≤U jfonc (v(Fi))(v(Q)) /* valeurs Fi pour Q plus définie que Ti */ MI, v (Ti) = vrai /* au moins un objet qui satisfait Ti */ 2) pour j = 1, r v(G) ∈ Umulti {v(S1), …, v(Sm)} ≤*U jmulti (v(Gi))(v(Q)) MI, v (Sn) = vrai pour n = 1, m G. Falquet, CUI, Université de Genève 18 de 28 Signification des formules Calcul habituel avec les opérateurs logiques et, ou, implique Idem avec les quantificateurs: MI, v (∀X.φ) est vrai si pour tout assignation de variables w partout égale à v sauf éventuellement sur X MI, w (φ) = vrai Une formule fermée n’a pas de variables non quantifiées. Sa signification est indépendant de toute assignation de variables. Un modèle de ψ est une interprétation I telle que MI(ψ) = vrai. G. Falquet, CUI, Université de Genève 19 de 28 Bases de données et requêtes Base de données = ensemble de formules Partie extensionnelle : les F-termes Partie en compréhension (« intension ») : formules plus compliquées (et, ou, =>, …) Conséquence logique ( « entailment » ) S φ Dans tout modèle de S (ensemble de formules fermées), φ est vrai. Substitution Application Variables → id-termes, s’étend aux id-termes, F-termes et formules. substition de base : s’il ne reste plus de variables Instance d’une formule : application d’une substitution (évent. de base) G. Falquet, CUI, Université de Genève 20 de 28 Requêtes F-terme: Q? Réponses par rapport à une base D Le plus petit ensemble de F-termes de base tel que (1) il est fermé pour (2) il contient toutes les instances de Q conséquences ( ) de D G. Falquet, CUI, Université de Genève 21 de 28 Propriétés: héritage Théorème Base de données D F-terme T = p[E → Q, E' → {R}] tel que D T Si v est un id-terme tel que p ≤O v (i.e. v est instance de p) Alors D v[E → Q, E' → {R}] Preuve : provient de la monotonicité de jfonc (v(E)) et jmulti(v(E')) Exemple faculty ≤ sally faculty[supervisor → faculty] donc sally[supervisor → faculty] G. Falquet, CUI, Université de Genève 22 de 28 Héritage (exemple) student: sally[age → midaged] student[age → young] student ≤ sally donc sally hérite age → young on en déduit sally[age → “least upper bound”(young, midaged) = yuppie] Raison dans toute interprétation on doit avoir : j(gO (age))(gO(sally)) ≥ gO(young) et j(g O(age))(gO(sally)) ≥ gO(midaged) gO homomorphisme de treillis => lub(gO (young), gO(midaged)) = gO(lub(young, midaged) => j(gO (age))(gO(sally)) = gO(yuppie) “ Surcharge monotone de l’héritage ” G. Falquet, CUI, Université de Genève 23 de 28 Héritage (suite) (1) faculty: bob[works → dept: cs1[mgr → empl: phil]] (5) faculty[supervisor → faculty] (8) E[supervisor → M] <= empl: E[works → dept:D[mgr → empl: M] empl: X[supervisor -> Y]? par (1) et (8) et empl ≤ faculty : on a empl: bob[supervisor → phil] par (5) et empl ≤ faculty : on a empl: bob[supervisor → faculty] donc empl: bob[supervisor → lub(faculty, phil)] == bob[supervisor → Top] L’information à propos du superviseur de bob est inconsistante. G. Falquet, CUI, Université de Genève 24 de 28 Accès au "schéma" de la base - méta requêtes On peut raisonner sur le schéma car les étiquettes sont des objets Tous les attributs de X qui sont de type personne : attributs(X)[attr -> {L}] <= faculty: X [ L -> person: Z] attributs(X)[attr -> {L}] <= faculty: X [ L -> {person: Z}] Tous les objets qui mentionnent "CS" directement trouver("CS")[contenu -> {X}] <= X[Y -> "CS"] trouver("CS")[contenu -> {X}] <= X[Y -> {"CS"}] + indirectement trouver("CS")[contenu -> {X}] <= X[Y -> Z], trouver("CS")[contenu -> {Z}] trouver("CS")[contenu -> {X}] <= X[Y -> {Z}], trouver("CS")[contenu -> {Z}] G. Falquet, CUI, Université de Genève 25 de 28 F-logic et modèle relationnel On peut utiliser des termes pour fixer le domaine de certains attributs personne[age → nombre, nom → string, amis → {personne}] on n’empêche pas d’avoir d’autres attributs ! c.f. modèles semi-structurés On peut fiexer les attributs d’un type comme dans le relationnel: personne[A → Top] <= personne[A → ⊥], A ≠ age, A ≠ nom, A ≠ amis G. Falquet, CUI, Université de Genève 26 de 28 Méthodes Définition de méthodes en F-logique = définition d’étiquette non basiques Définition non procédurale de la méthode graduation_date(université) person: X[graduation_date(I) → Y] <= university: I[alumni → {alumn_rec: G[stud → person: X, date → year: Y]}] Questions possibles X[graduation_date(I) → 1988] ? john[graduation_date(I) → Y] ? Un méthode de recherche globale trouveur[trouver(Quoi) → {X}] <= X[Y → Quoi] trouveur[trouver(Quoi) → {X}] <= X[Y → Z], trouveur[trouver(Quoi) → {Z}] G. Falquet, CUI, Université de Genève 27 de 28 Méthodes: redéfinition et surcharge X[nom(Date) → {N}] <= année: Date, personne: X[nom_famille(Date) → string:N] X[nom(Date) → {N}] <= année: Date, femme: X[nom_jeune_fille(Date) → string:N]. X[nom(Date) → {N}] <= année: Date, écrivain: X[nom_plume(Date) → string:N]. Différent de la redéfinition habituelle Si marie en 2000 est écrivain elle peut avoir jusqu’à trois noms différents Surcharge P.ex. On peut définir une méthode nom(Date) pour des entreprises, avec d’autres règles G. Falquet, CUI, Université de Genève 28 de 28