(in-package :user) ;; Creates a simple Ocelot file KB (defun create-bird-kb () (let (kb) (setq kb (gfp:create-kb 'bird :prototype (gfp:get-prototype 'gfp:ocelot-kb) :initargs `(:package ,(find-package :user) :testfn ,#'gfp::fequal :dbms-type :file :dbms-host nil ;; ,dbms-server :filename "~/bird.ocelot" ) ) ) (gfp:open-kb :kb kb :status :new) (gfp:goto-kb kb) (gfp:create-class 'bird nil) (gfp:create-class 'raptor 'bird) (gfp:create-class 'sparrow 'bird) (gfp:create-slot 'predator? 'bird) (gfp:put-facet-value nil 'predator? :value-type :boolean) (gfp:create-slot 'age 'bird) (gfp:put-facet-value nil 'age :value-type :integer) (gfp:put-facet-value nil 'age :numeric-min 0) (gfp:create-instance 'peregrine-falcon 'raptor) (gfp:create-instance 'white-crested-sparrow 'sparrow) (gfp:put-slot-value 'peregrine-falcon 'predator? t) (gfp:put-slot-value 'peregrine-falcon 'age 2) (gfp:put-slot-value 'white-crested-sparrow 'predator? nil) (gfp:put-slot-value 'white-crested-sparrow 'age 1) (gfp:save-kb :kb kb) ) ) ;; Read the bird KB from disk -- assumes create-bird-kb was previously ;; called to save the KB to disk. (defun read-bird-kb () (let (kb) (setq kb (gfp:create-kb 'bird :prototype (gfp:get-prototype 'gfp:ocelot-kb) :initargs `(:package ,(find-package :user) :testfn ,#'gfp::fequal :dbms-type :file :dbms-host nil ;; ,dbms-server :filename "~/bird.ocelot" ) ) ) (gfp:open-kb :kb kb :status :old) ) )