1:- dynamic naturalLanguageQueryHistory/2,
    2naturalLanguageAnswerHistory/3, naturalLanguageCommandHistory/3,
    3currentAgent/1, currentSpeaker/1, currentWSMContext/1.    4
    5setByRetractingAllAndAsserting(Term) :-
    6	Term =.. [Predicate|Args],
    7	length(Args,Length),
    8	length(TmpArgs,Length),
    9	TmpTerm =.. [Predicate|TmpArgs],
   10	retractall(TmpTerm),
   11	assert(Term).
   12
   13alexaSkillFLPQuery(Query,Response) :-
   14	alexaSkillFLPQueryHelper(Query,Response,0,1).
   15
   16alexaSkillFLPQueryHelper(Query,Response,Simulate,Log) :-
   17	currentWSMContext(TmpContext),
   18	atom_concat('Org::Cyc::WSMContext::',TmpContext,Context),
   19	(   Log = 1 ->
   20	    (	getCurrentDateTime(DateTime),
   21		fassert_argt('Agent1','Yaswi1',[term(naturalLanguageQueryHistory(Query,DateTime)),context(Context)],Result1)) ;
   22	    true ),
   23	naturalLanguageQuery(Query,Result2),
   24	(   Result2  = assert(Assertion) ->
   25	    (	view([asserting,[assertion,Assertion,context,Context]]),
   26		(   Simulate = 1 ->
   27		    true ;
   28		    (	
   30			
   31			
   33			
   34			
   36			fassert_argt('Agent1','Yaswi1',[term(Assertion),context(Context)],Result3),
   37			Result4 = [command(assert(Assertion)),returnValue(Result3),answer(-1)],
   38			view([assertion,Result4])
   39		    )
   39 )
   39 )
   39 ; 
   40	    (	Result2 = query(ActualQuery) ->
   41		(   view([querying,[query,ActualQuery,context,Context]]),
   42		    (	Simulate = 1 ->
   43			true ;
   44			(
   45			 term_variables(ActualQuery,Vars),
   46			 view([query,ActualQuery,vars,Vars]),
   49			 
   51			 call(ActualQuery),
   52			 view([query,ActualQuery]),
   53			 Result4 = [command(query(ActualQuery)),returnValue(ReturnValue),answer(Vars)],
   54			 view([query,Result4])
   55			)
   55 )
   55 )
   55 ;
   56		Result4 = [command(Result2),returnValue(-1),answer(-1)]
   57	    )
   57 )
   57,
   58	view([result4,Result4]),
   59	generateResponseFromTemplate(Result4,Answer),
   62	
   63	
   64	
   65	
   66	
   67	atomic_list_concat(['<alexa-skill-flp-result>',Answer,'</alexa-skill-flp-result>'],'',Response),
   68	!
   68.
   69alexaSkillFLPQueryHelper(Query,Response,Simulate,Log) :-
   70	atom_concat('I heard and cannot understand this: ',Query,Atom),
   71	atomic_list_concat(['<alexa-skill-flp-result>',Atom,'</alexa-skill-flp-result>'],'',Response),
   72	!.
   73
   74alexa(Query,Response) :-
   75	alexaSkillFLPQueryHelper(Query,Response,0,1).
   76
   77testAlexa(Query,Response) :-
   78	alexaSkillFLPQueryHelper(Query,Response,0,0).
   79
   80testAlexaSim(Query,Response) :-
   81	alexaSkillFLPQueryHelper(Query,Response,1,0).
   82
   83hasEnglishGloss(Symbol,Gloss) :-
   84	hasEnglishGlosses(Symbol,Glosses),
   85	member(Gloss,Glosses).
   86
   87hasEnglishGloss2(Symbol,Gloss) :-
   88	setof(Symbol,Glosses^(hasEnglishGlosses(Symbol,Glosses),member(Gloss,Glosses)),Results),
   89	nth(1,Results,Symbol).
   90
   91hasEnglishGlosses(X,Y) :-
   92	not(hasEnglishGlossesData(X,Y)),
   93	Y = [X],!.
   94hasEnglishGlosses(X,Y) :-
   95	hasEnglishGlossesData(X,Y).
   96
   97resolveProperName(NameString,Term) :-
   98	findall(Agent,hasFirstName(Agent,firstNameFn(NameString)),Agents),
   99	((length(Agents,0)) ->
  100	 (findall(Agent,hasLastName(Agent,lastNameFn(NameString)),Agents),
  101	  ((length(Agents,0)) ->
  102	   (Term = unknownAgentFn(Agent)) ;
  103	   ((length(Agents,1)) ->
  104	    ([Term] = Agents) ;
  105	    (Term = oneOf(Agents))))) ;
  106	 ((length(Agents,1)) ->
  107	  ([Term] = Agents) ;
  108	  (Term = oneOf(Agents)))).
  113phoneticallySimilar(['8','eight','ate']).
  127listQueryDateTimes(QueryDateTimes) :-
  128	findall(naturalLanguageQueryHistory(Query,DateTime),naturalLanguageQueryHistory(Query,DateTime),QueryDateTimes).
  129
  130listQueries(Queries) :-
  131	findall(Query,naturalLanguageQueryHistory(Query,DateTime),Queries)