Report Top Up a Node Prev Next Up a Map TOC Node Index File Index Page Bottom
PROXIMITY : Algorithm : Modified there-exists published Sun, Apr 21, 2002 - 13:19 EDT

Modified there-exists



Ehrlich's algorithm was first looking for non-basic level objects of type <noun> with a proper name, then basic level. I changed this so that the algorithm looks for and reports basic level and non-basic level information both with a proper name and with a simple lex arc naming the object. All information that can be found is reported, not just the first pattern to be matched.


Download this HTML file.   (Instructions for downloading)

Old there-exists


;-------------------------------------------------------------------------------
;
;	function: there_exists
;	input:  a noun to be defined
;	output: a list of individuals of type <noun> together with any
;		possessions, functions, actions, relations, or other
;		properties attributed to those individuals.  If individuals
;		exist, and have such properties, but aren't named, list
; 		the properties anyway.
;                                                             modified: mkb 2002
;------------------------------------------------------------------------------- 
(defun there_exists (noun)
  (setq agent-act (ag-act-fn noun))
  (setq str (struct noun nil))
  (setq ac (acts noun))
  (setq fun (func noun))
  (cond ((setq thex1 #3! ((find (compose lex- proper-name- ! object object1- ! object2 lex)
				 ~noun)))
	  (if (and (null str) (null fun))
	      (if (and (null ac) agent-act)
		  (list 'a noun 'is 'something 'a (car agent-act)
			'can (cadr agent-act)
			'a noun 'is 'something
			thex1
			'is.
			'structure= 'nil
			'function= 'nil
			'actions= 'nil
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'a noun 'is 'something
		      thex1
		      'is.
		      'structure= 'nil
		      'function= 'nil
		      'actions= ac 
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun)))
	    (list 'a noun 'is 'something
		  thex1
		  'is.
		  'structure= str
		  'function= fun
		  'actions= ac
		  'ownership= (indiv_rand_rels noun))))
         ((setq thex2 #3! ((find (compose lex-  proper-name- ! object member- ! class lex) 
				 ~noun)))
	  (if (and (null str) (null fun))
	      (if (and (null ac) agent-act)
		  (list 'a noun 'is 'something 'a (car agent-act)
			'can (cadr agent-act)
			'a noun 'is 'something
			thex2
			'is.
			'structure= 'nil
			'function= 'nil
			'actions= 'nil
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'a noun 'is 'something
		      thex2
		      'is.
		      'structure= 'nil
		      'function= 'nil
		      'actions= ac 
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun)))
	    (list 'a noun 'is 'something
		  thex2
		  'is.
		  'structure= str 
		  'function= fun
		  'actions= ac
		  'ownership= (indiv_rand_rels noun))))
	 (#3! ((find (compose object1- ! object2 lex) ~noun))
	      (if (and (null str) (null fun) agent-act)
		  (list 'a noun 'is 'something 'a (car agent-act)
			'can (cadr agent-act)
			'structure= 'nil 
			'function= 'nil
			'actions= ac 
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'structure= str 
		      'function= fun
		      'actions= ac 
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun))))
	 (#3! ((find (compose member- ! class lex) ~noun))
	      (if (and (null str) (null fun) agent-act)
		  (list 'a noun 'is 'something 'a (car agent-act)
			'can (cadr agent-act)
			'structure= 'nil 
			'function= 'nil
			'actions= ac
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'structure= str 
		      'function= fun
		      'actions= ac
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun)))) ))

New there-exists


;-------------------------------------------------------------------------------
;       function: find_individuals
;       input:    a noun to be defined
;       output:   a list of individuals of type <noun>
;                                                          created: stn 2002
;-------------------------------------------------------------------------------
(defun find_individuals (noun)
  "Returns a list of things that are a <noun>."
  ; are the lex arcs needed in a object,proper-name case frame???
  (append #3! ((find (compose lex- proper-name- ! object object1- ! object2 lex) ~noun
		     (compose lex- proper-name- ! object object1- ! rel) "ISA"))
	  #3! ((find (compose lex- proper-name- ! object member- ! class lex) ~noun))
	  #3! ((find (compose lex- object1- ! object2 lex) ~noun
		     (compose lex- object1- ! rel) "ISA"))
	  #3! ((find (compose lex- member- ! class lex) ~noun))
   ))


;-------------------------------------------------------------------------------
;
;	function: there_exists
;	input:  a noun to be defined
;	output: a list of individuals of type <noun> together with any
;		possessions, functions, actions, relations, or other
;		properties attributed to those individuals.  If individuals
;		exist, and have such properties, but aren't named, list
; 		the properties anyway.
;                                                             modified: mkb 2002
;                                                             modified: stn 2002
;-------------------------------------------------------------------------------
(defun there_exists (noun)
  (setq agent-act (ag-act-fn noun))
  (setq str (struct noun nil))
  (setq ac (acts noun))
  (setq fun (func noun))
  (cond ((setq thex1 (find_individuals noun))
	 (if (and (null ac) agent-act)
	     (list agent-act
		   'a noun 'is 'something
		   thex1
		   'is.
		   'structure= str
		   'function= fun
		   'actions= 'nil
		   'ownership= (indiv_rand_rels noun)
		   'possible 'properties= (indiv_rand_props noun))
	   (list 'a noun 'is 'something
		 thex1
		 'is.
		 'structure= str
		 'function= fun
		 'actions= ac 
		 'ownership= (indiv_rand_rels noun)
		 'possible 'properties= (indiv_rand_props noun)))
	    )
	 ;; if there is some object1 but we don't know its name
	 (#3! ((find (compose object1- ! object2 lex) ~noun))
	      (if (and (null str) (null fun) agent-act)
		  (list agent-act
			'structure= 'nil 
			'function= 'nil
			'actions= ac 
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'structure= str 
		      'function= fun
		      'actions= ac 
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun))))
	 ;; if there is some member of the class but we don't know its name
	 (#3! ((find (compose member- ! class lex) ~noun))
	      (if (and (null str) (null fun) agent-act)
		  (list agent-act
			'structure= 'nil 
			'function= 'nil
			'actions= ac
			'ownership= (indiv_rand_rels noun)
			'possible 'properties= (indiv_rand_props noun))
		(list 'structure= str 
		      'function= fun
		      'actions= ac
		      'ownership= (indiv_rand_rels noun)
		      'possible 'properties= (indiv_rand_props noun)))) 
	 ))

Node authored by Scott Napieralski

PROXIMITY : Algorithm : Modified there-exists published Sun, Apr 21, 2002 - 13:19 EDT
Report Top Up a Node Prev Next Up a Map TOC Node Index File Index Page Top