    # 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