# KEHOME/knowledge/applications/SemanticWeb/OpenCyc/WhyChicken.html
# Sep/4/2003


# Why did the chicken cross the road?

# tools used: MKE, OpenCyc
# Notes:
# OpenCyc is accessed using
#	ke$ do opencyc od server from world done;
# Preliminary browsing shows that OpenCyc
#	does not know "chicken", "road",
#	"cross", "purpose", "time", "past".
#	We must first define these terms.
# Normally, MKE creates term and instance names
#	and declares (isu) instances automatically. 
# OpenCyc does not have enough "common-sense"
#	to label this as a joke, or to reason about
#	the capabilities of nonhuman animals.
# OpenCyc does not know that
#	Agent do action with purpose = p done;
#	causedBy
#	p := Agent do choose od purpose done;


ke$ set echo=off, kbmode=cyc;

###### MKR questions to be implemented in CycL
##### ke$ at time = past {
##### ke>     the chicken do cross = cross_001 od the road
##### ke>	  with purpose = purpose_001 
##### ke>     done;
##### ke> };
##### ke$ ? causes cross_001;
##### ke$ cross_001 has purpose = ?;

###### definitions
ke$ do opencyc done;
CYC(): do ke-create-now od
CYC(): 	   "chicken","road","cross",
CYC():	   "purpose","time","past",
CYC():	   "subject","object" done;
CYC(): #$chicken isu #$Collection; #$chicken iss #$Bird;
CYC(): #$road    isu #$Collection; #$road    iss #$Roadway;
CYC(): #$cross   isu #$Collection; #$cross   iss #$Translation-LocationChange;
CYC(): #$purpose isu #$Collection; #$purpose isu #$AttributeValue;
CYC(): #$time    isu #$Collection; #$time    iss #$TimeInterval;
CYC(): #$past    isu #$time;

CYC(): #$AttributeValue isp #$subject,#$object,#$purpose,#$time;
CYC(): #$cross          has #$subject,#$object,#$purpose,#$time;

CYC(): do write-image to "world/chicken" done;

###### questions
ke$ do opencyc od server from chicken done;
CYC(): do ke-create-now od
CYC(): 	   "the_chicken","the_road","cross_001", 
CYC():	   "purpose_001","time_001" done;
CYC(): #$the_chicken isu #$chicken;
CYC(): #$the_road    isu #$road;
CYC(): #$cross_001   isu #$cross;
CYC(): #$purpose_001 isu #$purpose;
CYC(): #$time_001    isu #$time;

CYC(): at #$time = #$past {
CYC():	   #$the_chicken do cross = #$cross_001 od #$the_road
CYC():		with #$purpose = #$purpose_001
CYC():	   done;
CYC(): }:
###### which automatically creates these statements
##### #$cross_001 hasAttributes
#####	   #$subject_001,#$object_001,
#####	   #$purpose_001,#$time_001;
##### #$subject_001 is #$the_chicken;
##### #$object_001  is #$the_road;
##### #$purpose_001 is #$purpose_001;
##### #$time_001    is #$past;

CYC(): #$cross_001 #$causedBy ?e;
CYC(): #$cross_001 has purpose = ?p;

# OpenCyc response
Status : Suspended, Exhaust
Mt : UniversalVocabularyMt
EL Query :
(causedBy cross_001 ?E)
No answers

Inference Answer [Inference Answer 149.0.0]
Mt : UniversalVocabularyMt
EL Query :
(and 
   (hasAttributes cross_001 ?P) 
   (isa ?P purpose))
Answer Bindings :
?P    purpose_001 
Justifications :
(hasAttributes cross_001 purpose_001) in BaseKB 
:ISA   (isa purpose_001 purpose) in UniversalVocabularyMt 

:ISA   (isa purpose_001 purpose) in UniversalVocabularyMt 
(hasAttributes cross_001 purpose_001) in BaseKB