;; Zur Vorbereitung: (defkb "test" NIL) (change-kb "test") (list-kb) (defconcept gueter) (defconcept motor) (defconcept strasse) (defconcept schiene) (defconcept moebel :is-primitive gueter) ;; kleine Nachfrage: all die Oberkonzepte von Moebel (retrieve ?x (superconcepts moebel ?x)) (defconcept fahrzeug :is-primitive (:at-least 1 fahren-auf)) (list-kb) (defconcept transportfahrzeug :is (:and fahrzeug (:some transportieren gueter))) ;; folgendes fuehrt zu einem Fehler: (retrieve ?x (superconcepts transportfahrzeug ?x)) ;; undefinierte Konzepte bzw Rollen: (list-undefined-concepts) ;; austesten: (pc transportfahrzeug) (pr transportieren) (defrelation fahren-auf) (defrelation transportieren :range gueter) (defrelation angetrieben-werden-durch) (defconcept kfz :is (:and fahrzeug (:all angetrieben-werden-durch motor) (:all fahren-auf strasse))) (defconcept lkw :is (:and kfz (:some transportieren gueter))) (defconcept zug :is (:and fahrzeug (:all fahren-auf schiene))) (defconcept gueterzug :is (:and zug (:some transportieren gueter))) ;; austesten: (ask (subconcepts gueterzug zug)) (ask (subconcepts zug gueterzug)) (defconcept moebelwagen :is (:and lkw (:all transportieren moebel))) ;;;---------------------------------------------------------------------- ;; Definition von Instanzen (tellm (moebelwagen bulli)) (tellm (transportieren bulli g112)) (tellm (transportieren bulli g235)) ;; Mit Loom kann man nicht inferieren, dass g112 und g235 Gueter oder gar Moebel sind ;; --> unvollstaendiger Algorithmus (retrieve ?x (gueter ?x)) (retrieve ?x (moebel ?x)) ;; jedoch: (retrieve ?x (moebelwagen ?x)) (retrieve ?x (lkw ?x)) (retrieve ?x (transportieren bulli ?x)) (tellm (gueter g112)) (tellm (gueter g235)) ;; oder auch: (retrieve ?x (gueter ?x)) (retrieve ?x (instance--concepts g112 ?x)) (tellm (:about z521 zug (transportieren bananen) (transportieren kohlen))) (tellm (gueter bananen)) (tellm (gueter kohlen)) ;;;---------------------------------------------------------------------- ;;;;;;; Anfrage: Gueterzuege fahren nur auf Schienen: ;; erste Moeglichkeit: (find-subsumers&subsumees '(:all fahren-auf schiene)) ;; zweite Moeglichkeit: (defconcept schienenfahrzeug :is (:all fahren-auf schiene)) ;; die folgenden Anfragen funktionieren nicht wie beabsichtigt. Warum??? (retrieve ?x (subconcepts schienenfahrzeug ?x)) (ask (subconcepts schienenfahrzeug zug)) ;;;;;;;;;; Anfrage: Bulli ist ein Transportfahrzeug ;;; Erste Moeglichkeit: (retrieve ?x (transportfahrzeug ?x)) ;;; zweite Moeglichkeit: (ask (transportfahrzeug bulli)) ;;;;;;;;; Anfrage: z521 ist ein Gueterzug (retrieve ?x (gueterzug ?x))