KM (Knowledge Machine)
Transcrição
KM (Knowledge Machine)
KM (Knowledge Machine) – Eine Kurzeinführung • KM ist ein Frame-basiertes Wissensrepräsentationssystem • Implementiert in CommonLisp • System, Manual und Test-KB’s unter http://www.cs.utexas.edu/users/mfkb/km.html • Hohe Ausdruckmächtigkeit mit (hauptsächlich) PL1-Semantik. • Besonderheit: Schlussfolgern mit Situationen (“snapshot” der Wissensbasis zu einem best. Zeitpunkt) • Typische Repräsentationseinheit ist ein Frame/Klasse, der einen Slot mit einem best. Wert als Füller enthält. Einf. in die KI Kurzeinführung KM 1-1 Technisches & Bedienung Lisp starten (z. B. /soft/acl62/alisp) und CL-USER(1): :ld km-1-4-5-59.lisp ; Loading /home/.../km-1-4-5-59.lisp CL-USER(2): (compile-file "km-1-4-5-59.lisp") ;;; Compiling file km-1-4-5-59.lisp CL-USER(3): :ld km-1-4-5-59 ; Fast loading /home/.../km-1-4-5-59.fasl Resetting KM... ======================================================= KM - THE KNOWLEDGE MACHINE - INFERENCE ENGINE v1.4.5.59 ======================================================= Copyright (C) 2002 Peter Clark and Bruce Porter. KM comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Type (licence) for details. Type (km) for the KM interpreter prompt! CL-USER(4): (km) KM> Einf. in die KI Kurzeinführung KM 1-2 Frames/Klassen – Klasseneigenschaften Beschreibung der Klasseneigenschaften: (<class> has (<slot1> (<expr11> <expr12> ...)) (<slot2> (<expr21> <expr22> ...)) ...) Diese Eigenschaften beschreiben die Klasse selber und werden nicht an deren Instanzen vererbt. Typische (vordefinierte) Slots zur Beschreibung von Klasseneigenschaften: (superclasses (<superclass1> ... <superclassN>)) (subclasses (<subclass1> ... <subclassN>)) (instances (<instance1> ... <instanceN>))) Cars are vehicles and Things: superclasses(Car, Vehicle) ∧ superclasses(Car, Thing) (Car has (superclasses (Thing Vehicle))) Einf. in die KI Kurzeinführung KM 1-3 Frames/Klassen – Eigenschaften von Instanzen Beschreibung der Eigenschaften aller Klasseninstanzen: (every <class> has (<slot1> (<expr11> <expr12> ...)) ...) Every car has four wheels, an engine, and a chassis: ∀c isa(c, Car) ⇒ wheels(c, 4) ∀c isa(c, Car) ⇒ ∃e, ch isa(e, Engine) ∧ isa(ch, Chassis)∧ parts(c, e) ∧ parts(c, ch) (every Car has (wheels ((4))) (parts ((a Engine) (a Chassis)))) Der Ausdruck (a Engine) sagt aus, dass eine Instanz der Klasse Engine für jedes Auto existieren muss. Einf. in die KI Kurzeinführung KM 1-4 Instanzen Anlegen von Instanzen: KM> (*MyCar has (instance-of (Car))) (*MyCar) Anonyme Instanzen: KM> (a Car) (_Car1) Abfragen der Slotwerte: (the <slot> of <expr>) (<expr> <slot>) Was sind die Teile meines Autos? ANS = {x| parts(*MyCar, x)} KM> (the parts of *MyCar) (_Engine2 _Chassis3) Einf. in die KI KM> (*MyCar wheels) (4) Kurzeinführung KM 1-5 Abfragen: Klasseneigenschaften In gleicher Form können Klasseneigenschaften angezeigt werden: KM> (the superclasses of Car) (Thing Vehicle) Allgemeine Anzeige von Informationen zu Klassen und Instanzen: KM> (showme-all Car) (Car has (instances (*MyCar _Car1)) (superclasses (Thing Vehicle))) KM> (showme-all _Car1) (_Car1 has (instance-of (Car)) (parts ((a Engine) (a Chassis))) (wheels ((4)))) (every Car has (parts ((a Engine) (a Chassis))) (wheels ((4)))) Anzeigen der Klassenhierarchie mit: (taxonomy) Einf. in die KI Kurzeinführung KM 1-6 Slots im Detail Slots sind binäre Beziehungen zwischen Instanzen (werden intern selber als Instanzen der Klasse Slot repräsentiert). Slots werden implizit definiert. D. h. sie müssen nicht explizit deklariert werden, solange die Default-Einstellungen genügen. (parts has (instance-of (Slot)) (domain (Physobj)) (range (Physobj)) (cardinality (1-to-N)) (inverse (part-of)) (subslots (mechanical-part))) (wheel-count has (instance-of (Slot)) (domain (Vehicle)) (range (Integer)) (cardinality (N-to-1))) Die Default-Kardinalität is N-to-N. Mindestens einen Füller fordern N-to-1 und 1-to-1 und zusammen mit (a <class>) wird die Füllermenge dann genau auf einen Füller eingeschränkt. Einf. in die KI Kurzeinführung KM 1-7 Kardinalitäten Weitere Kardinalitäten sind: (at-least n <class>) (at-most n <class>) (exactly n <class>) ∀p isa(a, P erson) ⇒ |{n| owns(a, c) ∧ isa(c, Car)}| ≥ 1 (every Person has (owns ((at-least 1 Car)))) Der Wertebereich eines Slots kann ganz allgemein auf eine bestimmte Klasse eingeschränkt werden: (must-be-a <class>) (mustnt-be-a <class>) Einf. in die KI ∀p isa(p, P erson) ⇒ (∀p0f riends(p, p0) ⇒ isa(p0, P erson)) (every Person has (friends ((must-be-a Person)))) Kurzeinführung KM 1-8 Hinreichende Klassendefinitionen Definitionen von Klassen die sowohl notwendige als auch hinreichende Definitionen besitzten: (every Mexican has-definition (instance-of (Person)) (lives-in (*Mexico))) ∀x isa(x, M exican) ⇔ isa(x, P erson) ∧ lives − in(x, ∗M exico) Im Gegensatz zu lediglich notwendigen Klassendefinitionen: (Mexican has (superclasses (Person))) (every Mexican has (lives-in (*Mexico))) ∀x isa(x, M exican) ⇒ isa(x, P erson) ∧ lives − in(x, ∗M exico) Einf. in die KI Kurzeinführung KM 1-9 Selbstreferenzen In Spezifikationen von Slotfüllern in Klassendefinitionen (every) kann mit Self auf die Instanz der Klasse referenziert werden. (every Student has (favorite-color ((a Color))) (owns ((a Car with (parts ((a Door))) (color ((the favorite-color of Self))))))) KM> (a Student with (favorite-color (*Yellow))) (_Student1) KM> (the owns of _Student1) (_Car2) KM> (the color of (the owns of _Student1)) (COMMENT: (*Yellow && _Color3) unified to be *Yellow) (*Yellow) Einf. in die KI Kurzeinführung KM 1-10 Mengen Es existieren in KM Operatoren zur Auswahl von Mitgliedern einer Menge. Hier referenziert das Schlüsselwort It auf die in der Umgebung gebundenen Variable. Ein Beispiel: (every Car has (color ((a Color)))) (*Cab has (instance-of (Car)) (color (*Yellow))) KM> (forall (the all-instances of Car) where ((the color of It) = *Yellow) It) (*Cab) Einf. in die KI Kurzeinführung KM 1-11 Subsumtion Fragestellung: Welche Klasse ist genereller als (subsumiert) ein andere Klasse? Formal: A subsumiert B gdw. ∀x isa(x, B) ⇒ isa(x, A) In KM: (Vehicle has (superclasses (Thing))) (Car has (superclasses (Vehicle))) KM> (Thing covers Car) (t) Einf. in die KI Kurzeinführung KM 1-12