;;; -*- Mode:Lisp; Package:ONTOLINGUA-USER; Syntax:COMMON-LISP; Base:10 -*- 

(in-package "ONTOLINGUA-USER") 

(define-theory vt-example (vt-domain) 
  "An theory for demonstrating how to specify a design task. 
It uses the VT-domain domain theory.") 

(in-theory 'vt-example) 

;;; This is an example specification of the input to a VT design agent. 

(define-class EXAMPLE-ELEVATOR-TO-DESIGN (?e) 
  "A class of elevators satisfying the given requirements,  
which are stated as a constraint that assigns values to 
some attributes." 
  :iff-def 
  (and (elevator ?e) 
       (valid-component ?e) 
       (has-constraint  
         ?e 
         (the-constraint '(and 
                            (= (cabheight ?e) 96) 
                            (= (maxcarcapacity ?e) 3000) 
                            (= (cabintercomspec ?e) "no") 
                            (= (cablanternspec ?e) "no") 
                            (= (carphonespec ?e) "yes") 
                            (= (carpositionindicatorspec ?e) "yes") 
                            (= (dooropeningtype ?e) "side") 
                            (= (doorspeedspec ?e) "double") 
                            (= (floorheightspec  ?e) 165) 
                            (= (hoistwaydepth ?e) 110) 
                            (= (hoistwaytofrontmbeam ?e) 3) 
                            (= (hoistwaywidth ?e) 90) 
                            (= (mbeamsupportdistspec ?e) 118) 
                            (= (mbeamsupporttypespec ?e) "pocket") 
                            (= (machineroommbeamspec ?e) 16) 
                            (= (openingheight ?e) 84) 
                            (= (openingstrikesidespec ?e) "right") 
                            (= (openinghoistwayleftspec ?e) 32) 
                            (= (dooropenwidth ?e) 42) 
                            (= (noofopenings ?e) 6) 
                            (= (overheadspec ?e) 192) 
                            (= (pitdepth ?e) 72) 
                            (= (platformheightspec ?e) 84) 
                            (= (platformwidthspec ?e) 70) 
                            (= (elevatorspeed ?e) 250) 
                            (= (travelspec ?e) 729)))))) 


#| 
The above descriptions prescribes the requirements that a particular 
elevator design must meet.  Using this description a satisfactory 
elevator design may be requested with a query.  In the following, 
we use KQML query syntax: 

;;; find one ?e that satifies the definition of 
;;; example-elevator-to-design 

 (ask-one :content (example-elevator-to-design ?e) 
	  :aspect ?e 
	  :language KIF 
	  :ontology VT-DOMAIN 
	  :reply-with REQUEST-10) 

The following reply might sent by the design agent: 

 (reply :content DESIGN-B7 
	:in-reply-to REQUEST-10 
	:language KIF 
	:ontology VT-DOMAIN) 

The attributes of DESIGN-B7 can then be found through additional 
queries such as: 

 (evaluate :content (cabwt DESIGN-B7) 
	   :reply-with CAB-WEIGHT 
	   :language KIF 
	   :ontology VT-DOMAIN) 

;;; cabwt is a slot of DESIGN-B7 that was computed by the design agent 

|# 


This Lisp-to-HTML translation was brought to you by
François Gerbaux and Tom Gruber