|
Proposition de sujet de collaboration
Cornelia Tudorie
Je vous rappelle que le sujet de ma thèse concerne l'interrogation "souple" de la base de données, en utilisant des critères floues (ou imprécises) de sélection pour les données. Pour le debut voilà quelques exemples, très simples, de ce sort d'interrogations.
Par exemple, il faut trouver les étudiants agées de la deuxième année, bien que dans la base de données on n'ait que d'informations "crisp" (précises).
? Quels sont les étudiants âgés de la 2-ème année
SELECT nom, âge FROM Etudiant
WHERE (année = 2) AND ("âgé")
nom âge année
Joseph 24 2
Sophie 32 1
Jean 33 2
Paul 31 2
Isabelle 23 2
Pierre 21 1
Anne 22 2
Marie 25 2
Une réponse corecte doit tenir compte d’une définition a priori du prédicat flou (atomique) “agé”:
et de calculer pour touts les étudiants la degrée d’appartenance à l’ensemble floue “agé” (ou la degrée de satisfaction du critère).
En ce cas, on doit obtenir touts les étudiants ayant la degrée de satisfaction >0, rangés selon cette degrée:
Réponse:
Jean 33 1
Paul 31 1
Marie 25 1
Joseph 24 0.66
Isabelle 23 0.33
Et tout peut devenir plus compliqué, selon la complexité des critères de sélection:
? on peut avoir des prédicats modifiés, par exemple:
? Quels sont les étudiants très âgés de la 2-ème année
SELECT nom, âge FROM Etudiant WHERE (année = 2) AND ("très âgé")
Réponse:
Jean 33 1
Paul 31 0.33
"très âgé"
? quand il s’agit des prédicats composé, on applique toujours les opérateurs floues qui correspondent aux connectives logiques, par exemple:
? Quels sont les étudiants âgés ou qui ont des bonnes notes ?
SELECT nom, âge, note FROM Etudiant
WHERE ("âgé") OR (note = "bonne")
(1) (2)
( OR -----> MAX)
Réponse: (1) (2) (totale)
Paul 31 9 1 1 1
Joseph 24 9.50 0.66 1 1
Jean 33 7.50 1 0.50 1
Isabelle 23 10 0.33 1 0.50
Pierre 21 7.50 0 0.50 0.50
? quantificateurs vagues: la plupart, quelqu’uns, un peu, pas beaucoup, presque la moitié, …
On a vu donc que c’est la théorie des ensemble floues qu’il faut utiliser pour modeler ce sort de critères de sélection et les opérations sur eux.
Pour développer une interface “souple” en Logiques de Descriptions dans le but d'interroger des bases de données, on aurait besoin d’un Language de Descriptions qui combine les Logique de Descriptions et la Logique Floue, donc une nouvelle expressivité: "fuzzy".
Si on parle d’une possible extension “floue” du CICLOP, elle devra mettre à la disposition de l’utilisateur la possibilité de définir des concepts et des roles floues, des contraintes aussi, et d’exécuter des inférences.
Voilà une proposition pour la sintaxe et la sémantique de l’extension fuzzy:
1) création d’un tbox Fuzzy
(new-tbox Fuzzy)
2) création d’un concept fuzzy (reprezentand functii de apartenenta)
(define-fconcept )
= ( AND ( 0 | 1 | ) + )
= l | s | … (pour le sort de la courbe: linéaire …)
= ( )
3) définition de roles (ou attributs) fuzzy, en rapport avec les concepts fuzzy
4) définition de concepts avec des roles (ou attributs) fuzzy
5) inférence
(f-satisfy? )
où le concept a des roles (ou attributs) fuzzy
6) inférence (ou calcul)
(degree )
où le concept a des roles (ou attributs) fuzzy; on calcule la degrée d'appartenance au concept pour l'individu
Voilà deux exemples parallèles: l'un crisp et l'autre, similaire, mais fuzzy:
(! un TBox String, un TBox Numeric et un TBox ALCF)
(! ---------------------------------)
(new-tbox Str String)
(current-tbox Str)
(define-concept nom (aset Mary))
(! ---------------------------)
(new-tbox Nr Numeric)
(current-tbox Nr)
(define-concept jeune ( <= 25 ))
(! ---------------------------)
(new-tbox Etudiants ALCF)
(current-tbox Etudiants)
(define-primitive-attribute-connector
a-nom Str)
(define-primitive-attribute-connector
a-age Nr)
(define-primitive-attribute-connector
a-annee Nr)
(define-concept Etudiant
( AND
( some a-nom nom)
( some a-age ( > 0 )) ( some a-annee
( and ( > 0 ) ( <= 3 )))))
(define-concept jeune-Etud
( AND Etudiant
( some a-age jeune)))
(! --------------------------)
(new-abox Nos_Etudiants)
(current-abox Nos_Etudiants)
(instance Mary Etudiant)
(instance Mary (some a-nom (aset Mary)))
(instance Mary (some a-age (= 24)))
(instance Mary (some a-annee (= 2)))
(! un TBox String, un TBox Numeric, un Tbox Fuzzy et un TBox ALCF)
(! ---------------------------------)
(new-tbox Str String)
(current-tbox Str)
(define-concept nom (aset Mary))
(! ---------------------------)
(new-tbox Nr Numeric)
(current-tbox Nr)
(! ---------------------------)
(new-tbox Flou Fuzzy)
(current-tbox Flou)
(define-fconcept
f-jeune (AND (1 (- 22))
(L (22 25))
(0 (25 -))))
(! ---------------------------)
(new-tbox Etudiants ALCF)
(current-tbox Etudiants)
(define-primitive-attribute-connector
a-nom Str)
(define-primitive-attribute-connector
a-age Nr)
(define-primitive-attribute-connector
a-annee Nr)
(define-concept Etudiant
( AND
( some a-nom nom)
( some a-age ( > 0 )) ( some a-annee
( and ( > 0 ) ( <= 3 )))))
(define-concept f-jeune-Etud
( AND Etudiant
( some a-age f-jeune)))
(! --------------------------)
(new-abox Nos_Etudiants)
(current-abox Nos_Etudiants)
(instance Mary Etudiant)
(instance Mary (some a-nom (aset Mary)))
(instance Mary (some a-age (= 24)))
(instance Mary (some a-annee (= 2))) |