public InformationState parseIS(string path) { InformationState IS = new InformationState(); XDocument doc = new XDocument(); try { doc = XDocument.Load(path); } catch (Exception e) { Console.Write("exception Occured: " + e.Data.ToString()); } XElement _root = doc.Root; Console.WriteLine("$$$$$$$ : " + _root.Name); IS.Name = _root.Attribute("name").Value.ToString(); foreach (XElement currentNode in _root.Elements()) { Console.WriteLine("processing cell********* : " + currentNode.Name); if (currentNode.Name.LocalName.Trim() == "Cell") { Cell cell = _parseCell(currentNode); IS.addCell(cell); } } return IS; }
static void Main(string[] args) { ParseInformationState isParser = new ParseInformationState(); InformationState IS = new InformationState(); IS = isParser.parseIS(@"D:\Mukesh\Work\INSA\DialogueManagement\NLP\PredicateCalculus\bin\Debug\InformationState.xml"); Console.WriteLine(IS.toString()); }
public void applyEffects(ref InformationState IS) { foreach (Effect effect in effects) { effect.apply( ref IS); } }
public void checkAndApply(ref InformationState IS) { if (verifyConditions(IS)) { Console.Write(" inside effect "); Console.Write("\n"); applyEffects(ref IS); } }
public override bool isValid(InformationState IS) { string path = DefineConstants.expectedPredicate; Property p = IS.getPropertyValueOfPath(path); if (p.contains(belief)) { return true; } return false; }
public override bool isValid(InformationState IS) { string path = DefineConstants.commonGround; Property p = IS.getPropertyValueOfPath(path); if (p.contains(mutualBel)) { return true; } return false; }
public bool isApplicable(InformationState IS) { foreach (Precondition condition in applicabilityConditions) { if (!condition.isValid(IS)) { return false; } } return true; }
public override bool isValid(InformationState IS) { string path = DefineConstants.integratedMoves; Property p = IS.getPropertyValueOfPath(path); if (p.contains(move)) { return false; } return true; }
public bool verifyConditions(InformationState IS) { foreach (Precondition pcondition in preconditions) { if (!pcondition.isValid(IS)) { return false; } } return true; }
public override bool isValid(InformationState IS) { Property p = IS.getPropertyValueOfPath(DefineConstants.agenda); try { object pFront = p.front(); Predicate predicate = (Predicate)(pFront); } catch (InvalidCastException) { return true; } return false; }
public override bool isValid(InformationState IS) { string path = "$IS.semanticContext.shared.agenda"; Property p = IS.getPropertyValueOfPath(path); object pFront = p.front(); if (pFront== null) { return false; } else if (Unify.matchTerms(pFront, move)) { return true; } return false; }
public override bool isValid(InformationState IS) { string path = DefineConstants.expectedPredicate; Property p = IS.getPropertyValueOfPath(path); if (p != null) { try { object pFront = p.front(); Predicate predicate = (Predicate)(pFront); } catch (InvalidCastException) { return true; } } return false; }
public override bool isValid(InformationState IS) { try { if (value1.GetType() == TypeCode.Boolean.GetType() && value2.GetType() == TypeCode.Boolean.GetType()) { return ((bool)(value1) == (bool)(value2)); } //C++ TO C# CONVERTER TODO TASK: There is no C# equivalent to the classic C++ 'typeid' operator: if (value1.GetType() == TypeCode.Int32.GetType() && value2.GetType() == TypeCode.Int32.GetType()) { return ((int)(value1) == (int)(value2)); } if (value1.GetType() == TypeCode.Int32.GetType() && value2.GetType() == TypeCode.Double.GetType()) { return ((int)(value1) == (double)(value2)); } if (value1.GetType() == TypeCode.Double.GetType() && value2.GetType() == TypeCode.Int32.GetType()) { return ((double)(value1) == (int)(value2)); } if (value1.GetType() == TypeCode.Double.GetType() && value2.GetType() == TypeCode.Double.GetType()) { return ((double)(value1) == (double)(value2)); } //C++ TO C# CONVERTER TODO TASK: There is no C# equivalent to the classic C++ 'typeid' operator: if (value1.GetType() == TypeCode.String.GetType() && value2.GetType() == TypeCode.String.GetType()) { if (((string)(value1)).CompareTo((string)(value2)) == 0) { return true; } else { return false; } } } catch (InvalidCastException) { } return false; }
public override bool isValid(InformationState IS) { string path = DefineConstants.semanticBeliefs; Property p = IS.getPropertyValueOfPath(path); // std::cout<< p->getName() << " " <<std::endl; /* if (p.contains(belief)) { return true; } else */ if (p.contains(predicate)) { return true; } return false; }
public override bool isValid(InformationState IS) { bool result = true; string path = DefineConstants.semanticBeliefs; Property p = IS.getPropertyValueOfPath(path); if (p != null) { if (p.contains(belief)) { result = false; } else { object temp = p.evaluate(belief); if (temp != null) { result = false; } } } return result; }
public SelectRule(InformationState IS) { infoState = IS; selectedRules.Clear(); }
public SelectRule(DialogueAct da, InformationState IS) { dialogueAct = da; infoState = IS; }
/*bool Update::isPredicate() { return isAPredicate; } void Update::setIsPredicate(bool flag) { isAPredicate = flag; }*/ public override void apply(ref InformationState IS) { //steps:: // get the property of current path to be updated // check the type of the path property // give treatment for assert based on the type of the property element // if list then pushback //if vector then pushback //if queue then push //if stack then push //if(path.ElementAt(0) == '$') //{ // boost::shared_ptr<Property) p = is-)getPropertyValueOfPath(path); //std::string type = p-)type(); //queue if (modifier == "push") { try { Property p = IS.getPropertyValueOfPath(path); p.push(value); } catch (InvalidCastException) { Console.Write(" push: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "pop") { try { Property p = IS.getPropertyValueOfPath(path); p.pop(); } catch (InvalidCastException) { Console.Write(" pop: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "set") { try { Property p = IS.getPropertyValueOfPath(path); p.setValue(value); } catch (InvalidCastException) { Console.Write(" set: update operation out of range: "); Console.Write("\n"); } } else if (string.IsNullOrEmpty(modifier)) { try { Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property "); Console.Write("\n"); } else { p.setValue(value); } } catch (InvalidCastException) { Console.Write(" set: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "pushAgenda") { try { this.path = DefineConstants.agenda; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property agenda "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" pushAgenda: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "pushQUD") { try { this.path = DefineConstants.qud; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property pushQUD "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" pushQUD: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addInIntegraedMoves") { try { this.path = DefineConstants.integratedMoves; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addIntegrated Move "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addInIntegraedMoves: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addNextMove") { try { this.path = DefineConstants.nextMoves; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addIntegrated Move "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addNextMove: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addBelief") { try { this.path = DefineConstants.semanticBeliefs; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property Belief "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addBelief: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addExpected") { try { this.path = DefineConstants.expectedPredicate; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addExpected "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addExpected: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addAgentDialogueAct") { try { this.path = DefineConstants.agentDialogueActs; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addAgentDialogueAct "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addAgentDialogueAct: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "popAgenda") { try { path = DefineConstants.agenda; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property popAgenda "); Console.Write("\n"); } else { p.pop(); } } catch (InvalidCastException) { Console.Write(" popAgenda: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "popExpected") { try { path = DefineConstants.expectedPredicate; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property popExpected "); Console.Write("\n"); } else { p.pop(); } } catch (InvalidCastException) { Console.Write(" popExpected: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "clearAgenda") { path = DefineConstants.agenda; // "$IS.semanticContext.shared.agenda"; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property popAgenda "); Console.Write("\n"); } else { p.clear(); } } else if (modifier == "popQUD") { try { path = DefineConstants.qud; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property popQUD "); Console.Write("\n"); } else { p.pop(); } } catch (InvalidCastException) { Console.Write(" popQUD: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "addCommonGround") { try { path = DefineConstants.commonGround; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addCommonGround "); Console.Write("\n"); } else { p.push(this.value); } } catch (InvalidCastException) { Console.Write(" addCommonGround: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "clearCommonGround") { try { path = DefineConstants.commonGround; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property addCommonGround "); Console.Write("\n"); } else { p.clear(); } } catch (InvalidCastException) { Console.Write(" clearCommonGround: update operation out of range: "); Console.Write("\n"); } } else if (modifier == "removeCommonGround") { } else if (modifier == "clearSocialContext") { try { this.path = DefineConstants.commPressure; Property p = IS.getPropertyValueOfPath(path); if (p == null) { Console.Write("unable to access property clearSocialContext "); Console.Write("\n"); } else { p.clear(); } } catch (InvalidCastException) { Console.Write(" clearSocialContext: update operation out of range: "); Console.Write("\n"); } } }
public DialogueActInterpreter(DialogueAct da, InformationState IS) { infoState = IS; this.da = da; }
public List<UpdateRule> interprete(DialogueAct da, InformationState infoState) { List<UpdateRule> updateRules = new List<UpdateRule>(); Console.Write(" step 3 : Dialogue act interpretation : "); Console.Write("\n"); if (da.getID() == "Greet-open") { List<object> args = new List<object>(); args.Add(da.getSender()); string addressee = "Self"; //args.push_back(da->getAddressee()); args.Add(addressee); //predicate greet(user, system) Predicate userGreet = new Predicate("Greet-open", args); List<object> args1 = new List<object>(); // args1.push_back(da->getAddressee()); args1.Add(addressee); // args1.push_back(addressee); args1.Add(da.getSender()); //predicate greet( system, user) Predicate systemGreet = new Predicate("reply-Greet-open", args1); // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", userGreet)); Update pushAgenda = new Update("pushAgenda",systemGreet); Update addInIntegraedMoves = new Update("addInIntegraedMoves", userGreet); string grt = "Greet-open"; // boost::any anygrt = grt; Update socialContext = new Update("commPressure", grt); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } if (da.getID() == "SOM-Presented-by_other") { List<object> args = new List<object>(); args.Add(da.getSender()); string addressee = "Self"; //args.push_back(da->getAddressee()); args.Add(addressee); //predicate greet(user, system) Predicate userGreet = new Predicate("Greet-open", args); List<object> args1 = new List<object>(); // args1.push_back(da->getAddressee()); args1.Add(addressee); // args1.push_back(addressee); args1.Add(da.getSender()); Predicate systemGreet = new Predicate("reply-Greet-open", args1); Update pushAgenda = new Update("pushAgenda", systemGreet); Update addInIntegraedMoves = new Update("addInIntegraedMoves", userGreet); string grt = "Greet-open"; // boost::any anygrt = grt; Update socialContext = new Update("commPressure", grt); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } if (da.getID() == "Greet-close") { List<object> args = new List<object>(); args.Add(da.getSender()); args.Add(da.getAddressee()); //predicate greet(user, system) Predicate userGreet = new Predicate("Greet-close", args); List<object> args1 = new List<object>(); // args1.push_back(da->getAddressee()); // args1.push_back(da->getSender()); //predicate greet( system, user) Predicate systemGreet = new Predicate("Greet-close", args1); // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", userGreet)); Update pushAgenda = new Update("pushAgenda", systemGreet); Update addInIntegraedMoves = new Update("addInIntegraedMoves", userGreet); string grt = "Greet-close"; // boost::any anygrt = grt; Update socialContext = new Update("commPressure", grt); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //user ask what-concept to system if (da.getID() == "WHQ-WHAT-Concept") { string conceptName = (string)(da.logicalForm.Arguments[0]); if (Services.isClass(conceptName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConcept = new Predicate("ans-WHQ-WHAT-Concept", args); Update pushAgenda = new Update("pushAgenda", ansWhatConcept); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); // boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; // //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //whq-what-concept //user asks what are the features of a car? if (da.getID() == "WHQ-WHAT-All-Operations") { string conceptName = (string)(da.logicalForm.Arguments[0]); if (Services.isClass(conceptName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConcept = new Predicate("ans-WHQ-WHAT-All-Operations", args); Update pushAgenda = new Update("pushAgenda", ansWhatConcept); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-All-Operations //............................................................................................. //user asks what are the features of a car? if (da.getID() == "WHQ-WHAT-Entity-State") { string instanceName = (string)(da.logicalForm.Arguments[1]); //TODO verify whether object is a valid instance or not // if (isInstance(instanceName) ) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansEntityState = new Predicate("ans-WHQ-WHAT-Entity-State", args); Update pushAgenda = new Update("pushAgenda", ansEntityState); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-WHAT-instance state //............................................................................................. //user asks what are the attributes of a car? if (da.getID() == "WHQ-WHAT-All-Attributes") { string conceptName = (string)(da.logicalForm.Arguments[0]); if (Services.isClass(conceptName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConcept = new Predicate("ans-WHQ-WHAT-All-Attributes", args); Update pushAgenda = new Update("pushAgenda", ansWhatConcept); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-All-Operations //user asks for the speed of a car? if (da.getID() == "WHQ-WHAT-Concept-Attribute-Value") { string conceptName = (string)(da.logicalForm.Arguments[0]); string attributeName = (string)(da.logicalForm.Arguments[1]); if (Services.isClass(conceptName) && Services.isClassAttribute(conceptName, attributeName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConceptAttribute = new Predicate("ans-WHQ-WHAT-Concept-Attribute-Value", args); Update pushAgenda = new Update("pushAgenda", ansWhatConceptAttribute); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-concept-attribute //user asks for the description of the operation of the concept? if (da.getID() == "WHQ-WHAT-Concept-Feature") { string conceptName = (string)(da.logicalForm.Arguments[0]); string operationName = (string)(da.logicalForm.Arguments[1]); if (Services.isClass(conceptName) && Services.isClassOperation(conceptName, operationName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConceptFeature = new Predicate("ans-WHQ-WHAT-Concept-Feature", args); Update pushAgenda = new Update("pushAgenda", ansWhatConceptFeature); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-concept-feature //user asks for the description of the current action of the agent if (da.getID() == "WHQ-WHAT-Current-Action") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatCurrent = new Predicate("ans-WHQ-WHAT-Current-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatCurrent); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-All-Operations //user asks for the description of the action decision of the agent if (da.getID() == "WHQ-WHAT-Action-Decision") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansActionDecision = new Predicate("ans-WHQ-WHAT-Action-Decision", args); Update pushAgenda = new Update("pushAgenda", ansActionDecision); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-action-decision //user asks for the description of the last action of the agent if (da.getID() == "WHQ-WHAT-Last-Action") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatLastAction = new Predicate("ans-WHQ-WHAT-Last-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatLastAction); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-All-Operations //user asks for the description of the next action of the agent if (da.getID() == "WHQ-WHAT-Next-Action") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConceptFeature = new Predicate("ans-WHQ-WHAT-Next-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatConceptFeature); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-next action //user asks for the description of the next action of the agent if (da.getID() == "WHQ-WHAT-Current-Activity") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentActivity = new Predicate("ans-WHQ-WHAT-Current-Activity", args); Update pushAgenda = new Update("pushAgenda", ansWhatAgentActivity); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-next action //user asks for the description of the role of the agent if (da.getID() == "WHQ-WHAT-Agent-Role") { string agentName = (string)(da.logicalForm.Arguments[0]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentRole = new Predicate("ans-WHQ-WHAT-Agent-Role", args); Update pushAgenda = new Update("pushAgenda", ansWhatAgentRole); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //WHQ-WHAT-AgentT-Role //........................................................................................................ //user asks for the description of the next action of the role if (da.getID() == "WHQ-WHAT-Role-Next-Action") { string roleName = (string)(da.logicalForm.Arguments[0]); { //if (isRole(roleName)) // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatRoleNext = new Predicate("ans-WHQ-WHAT-Role-Next-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatRoleNext); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-WHAT-Role-Next-Action //........................................................................................................ //........................................................................................................ //user asks for the description of the next action of the team if (da.getID() == "WHQ-WHAT-Team-Next-Action") { { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatTeamNext = new Predicate("ans-WHQ-WHAT-Team-Next-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatTeamNext); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-WHAT-Role-Next-Action //........................................................................................................ //........................................................................................................ //user asks for the description of the current action of the role if (da.getID() == "WHQ-WHAT-Role-Current-Action") { string roleName = (string)(da.logicalForm.Arguments[0]); { //if (isRole(roleName)) // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatRoleCurrentAction = new Predicate("ans-WHQ-WHAT-Role-Current-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhatRoleCurrentAction); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-WHAT-Role-Next-Action //............................................................................................. //........................................................................................................ //user asks for the description of the means of action performed by performer if (da.getID() == "WHQ-WHAT-Action-Resource") { { //if (isRole(roleName)) // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatMeanResource = new Predicate("ans-WHQ-WHAT-Action-Resource", args); Update pushAgenda = new Update("pushAgenda", ansWhatMeanResource); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //"WHQ-WHAT-Action-Resource" //............................................................................................. //******************************************************************************** // WHQ-WHO (present , past , future ) action //******************************************************************************** /* "WHQ-WHO-Will-Do-Action" @actionName */ //user asks for the role name who will do action in future if (da.getID() == "WHQ-WHO-Will-Do-Action") { string actionName = (string)(da.logicalForm.Arguments[0]); { //if (isAction(actionName)) // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhoWillDo = new Predicate("ans-WHQ-WHO-Will-Do-Action", args); Update pushAgenda = new Update("pushAgenda", ansWhoWillDo); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-Who-Will-Do //******************************************************************************** /* "WHQ-WHO-Will-Do-Action" @actionName */ //user asks for the role name who will do action in future if (da.getID() == "WHQ-WHO") { //std::string actionName = boost::any_cast<std::string>(da->logicalForm.Arguments.front()); { //if (isAction(actionName)) // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansDo = new Predicate("ans-WHQ-WHO", args); Update pushAgenda = new Update("pushAgenda", ansDo); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } //else /* { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //WHQ-Who-Will-Do //******************************************************************************** //******************************************************************************** // end of WHQ-WHO (present , past , future ) action //******************************************************************************** //Yes-No-Questions if (da.getID() == "YES-NO-Question") { string funtor = (string)(da.logicalForm.Arguments[0]); //preprocessing of yes no questions if (funtor == "Agent-Role") { //verify whether isAgent() && isRole() string agentName = (string)(da.logicalForm.Arguments[1]); if (Services.isAgent(agentName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansYesNoQtn = new Predicate("ans-YES-NO-Question", args); Update pushAgenda = new Update("pushAgenda", ansYesNoQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } else { List<object> args = new List<object>(); // args.push_back(conceptName); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: Predicate ansConceptNotKnown("respond-Unknown-concept", args); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: Update *pushAgenda = new Update("pushAgenda",ansConceptNotKnown); Update pushAgenda = new Update("pushAgenda", ansConceptNotKnown); UpdateRule rule = new UpdateRule(); rule.addEffect(pushAgenda); updateRules.Add(rule); } } //funcot == agent role } //WHQ-WHAT-All-Operations //******************************************************************************** // Check-Question //******************************************************************************** if (da.getID() == "Check-Question") { string funtor = (string)(da.logicalForm.Arguments[0]); //preprocessing of yes no questions if (funtor == "Action-Execution-By-Role") { //verify whether isRole() && sufficient parameters are available string roleName = (string)(da.logicalForm.Arguments[1]); // if (isRole(roleName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQtn = new Predicate("ans-Check-Question", args); Update pushAgenda = new Update("pushAgenda", ansCheckQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role //.............................................................................. if (funtor == "Entity-Perceived-by-Agent") { string agent = (string)(da.logicalForm.Arguments[1]); string entity = (string)(da.logicalForm.Arguments[2]); //verify whether isEntity(entity) // if (isEntity(entity)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQtn = new Predicate("ans-Check-Question", args); Update pushAgenda = new Update("pushAgenda", ansCheckQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role //.............................................................................. //frame: Action-Execution-Perceived-By-Agent $agent $performer $action //.............................................................................. if (funtor == "Action-Execution-Perceived-By-Agent") { string agent = (string)(da.logicalForm.Arguments[1]); string performer = (string)(da.logicalForm.Arguments[2]); //verify whether isAgent(performer) // if (isAgent(performer)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQtn = new Predicate("ans-Check-Question", args); Update pushAgenda = new Update("pushAgenda", ansCheckQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role //.............................................................................. //.............................................................................. //frame: Action-Execution-By-Team $action $tense //.............................................................................. if (funtor == "Action-Execution-By-Team") { string action = (string)(da.logicalForm.Arguments[1]); //verify whether isAction(action) // if (isAction(action)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQtn = new Predicate("ans-Check-Question", args); Update pushAgenda = new Update("pushAgenda", ansCheckQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Team //............................................................................................... } //******************************************************************************** // end of Check-Question //******************************************************************************** //******************************************************************************** // WHQ-WHY //******************************************************************************** if (da.getID() == "WHQ-WHY") { string funtor = (string)(da.logicalForm.Arguments[0]); //preprocessing of yes no questions if (funtor == "Action-Execution-By-Role") { //verify whether isRole() && sufficient parameters are available string roleName = (string)(da.logicalForm.Arguments[1]); // if (isRole(roleName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQtn = new Predicate("ans-WHQ-WHY", args); Update pushAgenda = new Update("pushAgenda", ansCheckQtn); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role } //******************************************************************************** // end of WHQ-WHY //******************************************************************************** //******************************************************************************** // Unknown-concept //******************************************************************************** if (da.getID() == "Unknown-concept") { string funtor = (string)(da.logicalForm.Arguments[0]); //preprocessing of yes no questions { //if(funtor == "Action-Execution-By-Role") //verify whether isRole() && sufficient parameters are available // std::string roleName = boost::any_cast<std::string>(da->logicalForm.Arguments[1]); // if (isRole(roleName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: Predicate ansNotUnderstood("respond-Unknown-concept", args); Predicate ansNotUnderstood = new Predicate("respond-Unknown-concept", args); Update pushAgenda = new Update("pushAgenda", ansNotUnderstood); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); //std::string comGround = "mutual-belief"; //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role } //******************************************************************************** // ansNotUnderstood //******************************************************************************** //******************************************************************************** // not-understood //******************************************************************************** if (da.getID() == "Not-Understood") { //preprocessing of yes no questions { //if(funtor == "Action-Execution-By-Role") //verify whether isRole() && sufficient parameters are available // std::string roleName = boost::any_cast<std::string>(da->logicalForm.Arguments[1]); // if (isRole(roleName)) { // boost::shared_ptr<Condition> condition = boost::shared_ptr<Condition>(new Condition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansNotUnderstood = new Predicate("respond-Not-Understood", args); Update pushAgenda = new Update("pushAgenda", ansNotUnderstood); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //boost::shared_ptr<Update> pushQUD = boost::shared_ptr<Update>(new Update("pushQUD",da->logicalForm)); // //std::string comGround = "mutual-belief"; // //boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("addCommonGround",comGround)); UpdateRule rule = new UpdateRule(); //rule->addPrecondition(condition); rule.addEffect(pushAgenda); //rule->addEffect(pushQUD); rule.addEffect(addInIntegraedMoves); updateRules.Add(rule); } /* //else { std::vector<boost::any> args; // args.push_back(conceptName); Predicate ansConceptNotKnown("respond-Unknown-concept", args); boost::shared_ptr<Update> pushAgenda = boost::shared_ptr<Update>(new Update("pushAgenda",ansConceptNotKnown)); boost::shared_ptr<UpdateRule> rule =boost::shared_ptr<UpdateRule> (new UpdateRule()) ; rule->addEffect(pushAgenda); updateRules.push_back(rule); } */ } //funcot == Action-Execution-By-Role } //******************************************************************************** return updateRules; }
public abstract bool isValid(InformationState IS);
public override bool isValid(InformationState IS) { if (stringValue1 == "firstOnAgenda") { Predicate move = (Predicate)(value2); FirstOnAgenda condition = new FirstOnAgenda(move); return condition.isValid(IS); } else if (stringValue1 == "IsNotIntegratedMove") { Predicate move = (Predicate)(value2); IsNotIntegratedMove condition = new IsNotIntegratedMove(move); return condition.isValid(IS); } else if (stringValue1 == "isBelief") { try { SemanticPredicate belief = (SemanticPredicate)(value2); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: isBelief *condition = new isBelief(belief); IsBelief condition = new IsBelief(belief); return condition.isValid(IS); } catch (InvalidCastException) { } try { Predicate belief = (Predicate)(value2); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: isBelief *condition = new isBelief(belief); IsBelief condition = new IsBelief(belief); return condition.isValid(IS); } catch (InvalidCastException) { } } else if (stringValue1 == "isNotABelief") { /* try { SemanticPredicate belief = boost::any_cast<SemanticPredicate>( value2); boost::shared_ptr<isNotABelief> condition = boost::shared_ptr<isNotABelief>(new isNotABelief(belief)); return condition->isValid(is); } catch(boost::exception const& ex) { } */ try { Predicate belief = (Predicate)(value2); Predicate p = new Predicate(belief.Functor, belief.Arguments); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: isNotABelief *condition = new isNotABelief(p); IsNotABelief condition = new IsNotABelief(p); return condition.isValid(IS); } catch (InvalidCastException) { } } else if (stringValue1 == "isMutualBelief") { try { MutualBelief belief =(MutualBelief)(value2); IsMutualBelief condition = new IsMutualBelief(belief); return condition.isValid(IS); } catch (InvalidCastException) { } } else if (stringValue1 == "isNotMutualBelief") { try { MutualBelief belief = (MutualBelief)(value2); IsNotMutualBelief condition = new IsNotMutualBelief(belief); return condition.isValid(IS); } catch (InvalidCastException) { } } else if (stringValue1 == "isExpected") { try { Predicate belief = (Predicate)(value2); Predicate p = new Predicate(belief.Functor, belief.Arguments); //C++ TO C# CONVERTER WARNING: The following line was determined to be a copy constructor call - this should be verified and a copy constructor should be created if it does not yet exist: //ORIGINAL LINE: isExpected expected(p); IsExpected expected = new IsExpected(p); return expected.isValid(IS); } catch (InvalidCastException) { } } else if (stringValue1 == "isTopOfAgendaEmpty") { IsTopOfAgendaEmpty condition = new IsTopOfAgendaEmpty(); return condition.isValid(IS); } else if (stringValue1 == "hasNoExpectation") { HasNoExpectation condition = new HasNoExpectation(); return condition.isValid(IS); } else { if (!string.IsNullOrEmpty(stringValue1)) { this.value1 = IS.getValueOfPath(stringValue1); } if (!string.IsNullOrEmpty(stringValue2)) { this.value2 = IS.getValueOfPath(stringValue2); } if (value1 != null && value2 != null) { Equals condition = new Equals(value1, value2); return condition.isValid(IS); } } return true; }
public void ComponentInitialization(string path) { ParseInformationState isParser = new ParseInformationState(); IS = new InformationState(); IS = isParser.parseIS(path+ "res/InformationState.xml"); MascaretApplication.Instance.VRComponentFactory.Log(IS.toString()); edm = new EasyDialogueManager (); string[] fileEntries = Directory.GetFiles(path+"res/dialogue"); foreach (string fileName in fileEntries) { MascaretApplication.Instance.VRComponentFactory.Log("................Easy dialogue files ...........::" + fileName); if (fileName.ToString().EndsWith(".xml")) { EasyDialogueFile easyDialPlan = EasyDialogueManager.LoadDialogueFileFromPath1(fileName); // DialogueFile dialoguePlan = EasyDialogueManager.LoadDialogueFileFromPath (Application.dataPath + "/StreamingAssets/res/tutorial.xml"); planLib.AddPlan(easyDialPlan); MascaretApplication.Instance.VRComponentFactory.Log("................Easy dialogue files ....file loaded successfully"); } } //edm = EasyDialogueManager.LoadDialogueFile(Application.dataPath + "/StreamingAssets/res/tutorial.xml"); components = new InitialiseComponents (path); config = new ComponentConfig(); config = components.Config; extractor = new TemplateExtractor(); extractor.setupComponent(config); // TextComponent tc = new TextComponent(); hmmComponent = new HMMComponent(); hmmComponent.setupComponent(config); dialogueInterpreter = new DialogueInterpreter(); dialogueInterpreter.setupComponent(config); nlgDialogueGenerator = new NaturalLanguageDialogueGenerator(); nlgDialogueGenerator.setupComponent(config); }
/* std::vector<boost::shared_ptr<UpdateRule> > RuleFactory::getFactoryRules() { return factoryRules; } */ public List<UpdateRule> createRules(DialogueAct da, InformationState IS) { List<UpdateRule> factoryRules = new List<UpdateRule>(); //rule to accomodate system greet in response to user greet try { List<object> args = new List<object>(); string addressee = "Self"; // args.push_back(da->getAddressee()); args.Add(addressee); args.Add(da.getSender()); Predicate systemGreet = new Predicate("Greet-open", args); //preconditions Precondition notGreeted = new Precondition("isNotIntegratedMove", systemGreet); Precondition firstOnAgenda = new Precondition("firstOnAgenda", systemGreet); //effects Update addNextMove = new Update("addNextMove", systemGreet); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", systemGreet); Update clearSocialContext = new Update("clearSocialContext"); //SemanticPredicate mutualBel("MutualBelief","","",systemGreet); Update belief = new Update("addBelief", systemGreet); UpdateRule rule = new UpdateRule(); rule.addPrecondition(notGreeted); rule.addPrecondition(firstOnAgenda); // rule->addEffect(belief); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); rule.addEffect(clearSocialContext); factoryRules.Add(rule); } catch (Exception) { } try { List<object> args = new List<object>(); // args.push_back(da->getAddressee()); // args.push_back(da->getSender()); //predicate greet( system, user) Predicate systemGreet = new Predicate("Greet-close", args); //preconditions //boost::shared_ptr<Precondition> notGreeted = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", systemGreet)); Precondition firstOnAgenda = new Precondition("firstOnAgenda", systemGreet); //effects Update addNextMove = new Update("addNextMove", systemGreet); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", systemGreet); Update clearSocialContext = new Update("clearSocialContext"); UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notGreeted); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); rule.addEffect(clearSocialContext); factoryRules.Add(rule); } catch (Exception) { } try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConcept = new Predicate("ans-WHQ-WHAT-Concept", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatConcept); //effects Predicate awc = new Predicate("ans-WHQ-WHAT-Concept", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", awc); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", awc); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-concept question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansActionChoice = new Predicate("Reply-Action-Choice", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansActionChoice); //effects Update addNextMove = new Update("addNextMove", ansActionChoice); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansActionChoice); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-instance-state question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansEntityState = new Predicate("ans-WHQ-WHAT-Entity-State", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansEntityState); //effects Predicate ansInstanceState = new Predicate("ans-WHQ-WHAT-Entity-State", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansInstanceState); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansInstanceState); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //........................................................................................ //accomodate system response to the user what-concept-feature question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAllOperations = new Predicate("ans-WHQ-WHAT-All-Operations", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAllOperations); //effects Predicate ansAllOperations = new Predicate("ans-WHQ-WHAT-All-Operations", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansAllOperations); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansAllOperations); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-all-attribute question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAllAttributes = new Predicate("ans-WHQ-WHAT-All-Attributes", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAllAttributes); //effects Predicate ansAllOperations = new Predicate("ans-WHQ-WHAT-All-Attributes", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansAllOperations); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansAllOperations); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-concept-attribute question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConceptAttributes = new Predicate("ans-WHQ-WHAT-Concept-Attribute-Value", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatConceptAttributes); //effects Predicate ansConceptAttribute = new Predicate("ans-WHQ-WHAT-Concept-Attribute-Value", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansConceptAttribute); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansConceptAttribute); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-concept-feature question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatConceptFeature = new Predicate("ans-WHQ-WHAT-Concept-Feature", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatConceptFeature); //effects Predicate ansConceptFeature = new Predicate("ans-ans-WHQ-WHAT-Concept-Feature", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansConceptFeature); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansConceptFeature); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-next action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentNextAction = new Predicate("ans-WHQ-WHAT-Next-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAgentNextAction); //effects Predicate ansNextAction = new Predicate("ans-WHQ-WHAT-Next-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansNextAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansNextAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-action decision try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatActionDecision = new Predicate("ans-WHQ-WHAT-Action-Decision", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatActionDecision); //effects Predicate ansActionDecision = new Predicate("ans-WHQ-WHAT-Action-Decision", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansActionDecision); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansActionDecision); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-next action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentCurrentAction = new Predicate("ans-WHQ-WHAT-Current-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAgentCurrentAction); //effects Predicate ansCurrentAction = new Predicate("ans-WHQ-WHAT-Current-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansCurrentAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansCurrentAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-last action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentLastAction = new Predicate("ans-WHQ-WHAT-Last-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAgentLastAction); //effects Predicate ansLastAction = new Predicate("ans-WHQ-WHAT-Last-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansLastAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansLastAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-last action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatActionRes = new Predicate("ans-WHQ-WHAT-Action-Resource", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatActionRes); //effects Predicate ansActionMeanRes = new Predicate("ans-WHQ-WHAT-Action-Resource", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansActionMeanRes); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansActionMeanRes); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-current activity try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentActivity = new Predicate("ans-WHQ-WHAT-Current-Activity", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAgentActivity); //effects Predicate ansAgentActivity = new Predicate("ans-WHQ-WHAT-Current-Activity", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansAgentActivity); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansAgentActivity); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //accomodate system response to the user what-agent role try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatAgentRole = new Predicate("ans-WHQ-WHAT-Agent-Role", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatAgentRole); //effects Predicate ansAgentRole = new Predicate("ans-WHQ-WHAT-Agent-Role", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansAgentRole); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansAgentRole); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //........................................................... //accomodate system response to the user what is role next action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatRoleNextAction = new Predicate("ans-WHQ-WHAT-Role-Next-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatRoleNextAction); //effects Predicate ansRoleNextAction = new Predicate("ans-WHQ-WHAT-Role-Next-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansRoleNextAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansRoleNextAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //................................................................................................................... //accomodate system response to the user: what is team next action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatTeamNextAction = new Predicate("ans-WHQ-WHAT-Team-Next-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatTeamNextAction); //effects Predicate ansTeamNextAction = new Predicate("ans-WHQ-WHAT-Team-Next-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansTeamNextAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansTeamNextAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //................................................................................................................... //accomodate system response to the user what is role current action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhatRoleCurrentAction = new Predicate("ans-WHQ-WHAT-Role-current-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhatRoleCurrentAction); //effects Predicate ansRoleCurrentAction = new Predicate("ans-WHQ-WHAT-Role-Current-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansRoleCurrentAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansRoleCurrentAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //================================================================================ //******************************************************************************** // WHQ-WHO (present , past , future ) action //******************************************************************************** //================================================================================ //accomodate system response to the user who will do action try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhoWillDoAction = new Predicate("ans-WHQ-WHO-Will-Do-Action", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhoWillDoAction); //effects Predicate ansWhoWillAction = new Predicate("ans-WHQ-WHO-Will-Do-Action", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansWhoWillAction); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansWhoWillAction); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //================================================================================ //******************************************************************************** //accomodate system response to the ans-WHQ-WHO question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhoQuestion = new Predicate("ans-WHQ-WHO", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhoQuestion); //effects Predicate ansWhoQtn = new Predicate("ans-WHQ-WHO", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansWhoQtn); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansWhoQtn); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //******************************************************************************** //******************************************************************************** // end of WHQ-WHO (present , past , future ) action //******************************************************************************** //yes no question //accomodate system response to the user yes no question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansYesNoQtn = new Predicate("ans-YES-NO-Question", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansYesNoQtn); //effects Predicate ansYesNo = new Predicate("ans-YES-NO-Question", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansYesNo); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansYesNo); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //******************************************************************************** // Check Questions //******************************************************************************** //accomodate system response to the check question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansCheckQuestion = new Predicate("ans-Check-Question", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansCheckQuestion); //effects Predicate ansYesNo = new Predicate("ans-Check-Question", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansYesNo); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansYesNo); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //******************************************************************************** // end of Check Questions //******************************************************************************** //******************************************************************************** // WHQ-WHY Questions //******************************************************************************** //accomodate system response to the whq-why question try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate ansWhyQuestion = new Predicate("ans-WHQ-WHY", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansWhyQuestion); //effects Predicate ansWHYQtn = new Predicate("ans-WHQ-WHY", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansWHYQtn); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", ansWHYQtn); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } //******************************************************************************** // end of WHQ-WHY Questions //******************************************************************************** try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate inform = new Predicate("Inform", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", inform); //effects Predicate pre = new Predicate("Inform", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", pre); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", pre); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); factoryRules.Add(rule); } catch (Exception) { } /* try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); std::vector<boost::any> args; Predicate ask("Ask", args); boost::shared_ptr<Precondition> firstOnAgenda = boost::shared_ptr<Precondition>(new Precondition("firstOnAgenda", ask)); //effects Predicate pre("Ask", da->logicalForm.Arguments); boost::shared_ptr<Update> addNextMove = boost::shared_ptr<Update>(new Update("addNextMove",pre)); boost::shared_ptr<Update> popAgenda = boost::shared_ptr<Update>(new Update("popAgenda")); boost::shared_ptr<Update> addInIntegraedMoves = boost::shared_ptr<Update>(new Update("addInIntegraedMoves",pre)); std::vector<boost::any> args2; Predicate exp("Inform",args2); boost::shared_ptr<Update> expected = boost::shared_ptr<Update>(new Update("addExpected",exp)); //effects boost::shared_ptr<UpdateRule> rule = boost::shared_ptr<UpdateRule>(new UpdateRule() ); // rule->addPrecondition(notAsked); rule->addPrecondition(firstOnAgenda); rule->addEffect(addNextMove); rule->addEffect(expected); rule->addEffect(popAgenda); rule->addEffect(addInIntegraedMoves); factoryRules.push_back(rule); } catch(boost::exception & e) { } try{ std::vector<boost::any> args; args.push_back(da->logicalForm.Arguments[0]); //predicate greet( system, user) Predicate iGreet("Initial-Greet", args); //preconditions //boost::shared_ptr<Precondition> notGreeted = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", systemGreet)); boost::shared_ptr<Precondition> firstOnAgenda = boost::shared_ptr<Precondition>(new Precondition("firstOnAgenda", iGreet)); //effects boost::shared_ptr<Update> addNextMove = boost::shared_ptr<Update>(new Update("addNextMove", iGreet)); boost::shared_ptr<Update> popAgenda = boost::shared_ptr<Update>(new Update("popAgenda")); boost::shared_ptr<Update> addInIntegraedMoves = boost::shared_ptr<Update>(new Update("addInIntegraedMoves",iGreet)); boost::shared_ptr<Update> clearSocialContext = boost::shared_ptr<Update>(new Update("clearSocialContext")); SemanticPredicate bel("Bel","Self",iGreet); boost::shared_ptr<Update> belief = boost::shared_ptr<Update>(new Update("addBelief", bel)); boost::shared_ptr<UpdateRule> rule = boost::shared_ptr<UpdateRule>(new UpdateRule() ); // rule->addPrecondition(notGreeted); rule->addPrecondition(firstOnAgenda); rule->addEffect(belief); rule->addEffect(addNextMove); rule->addEffect(popAgenda); rule->addEffect(addInIntegraedMoves); rule->addEffect(clearSocialContext); factoryRules.push_back(rule); } catch(boost::exception &e) { } */ try { List<object> args = new List<object>(); string addressee = "Self"; //args.push_back(da->getAddressee()); args.Add(addressee); args.Add(da.getSender()); Predicate greet = new Predicate("Greet-open", args); //predicate greet( system, user) Predicate systemGreet = new Predicate("reply-Greet-open", args); //preconditions Precondition notGreeted = new Precondition("isNotIntegratedMove", greet); Precondition firstOnAgenda = new Precondition("firstOnAgenda", systemGreet); //effects Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", greet); Update clearSocialContext = new Update("clearSocialContext"); // SemanticPredicate mutualBel("MutualBelief","","",systemGreet); // boost::shared_ptr<Update> belief = boost::shared_ptr<Update>(new Update("addBelief", systemGreet)); UpdateRule rule = new UpdateRule(); rule.addPrecondition(notGreeted); rule.addPrecondition(firstOnAgenda); // rule->addEffect(belief); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); rule.addEffect(clearSocialContext); Update addNextMove = new Update("addNextMove", systemGreet); rule.addEffect(addNextMove); factoryRules.Add(rule); } catch (Exception) { } try { //preconditions // boost::shared_ptr<Precondition> notAsked = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", da->logicalForm)); List<object> args = new List<object>(); Predicate init_intro = new Predicate("Initial-Introduction", args); Precondition firstOnAgenda = new Precondition("firstOnAgenda", init_intro); //effects Predicate pre = new Predicate("Initial-Introduction", da.logicalForm.Arguments); Update popAgenda = new Update("popAgenda"); //boost::shared_ptr<Update> addInIntegraedMoves = boost::shared_ptr<Update>(new Update("addInIntegraedMoves",pre)); List<object> args2 = new List<object>(); //std::string addressee = "Self"; //args2.push_back(addressee); args.Add(da.getAddressee()); args2.Add(da.getSender()); //predicate greet( system, user) Predicate initIntro = new Predicate("Initial-Introduction", args); Update belief = new Update("addBelief", initIntro); Update addNextMove = new Update("addNextMove", initIntro); Update addInInteg = new Update("addInIntegraedMoves", initIntro); //effects UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(belief); rule.addEffect(addInInteg); factoryRules.Add(rule); } catch (Exception) { } //=========================================================== //accomodate system reply for concept not known try { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansConceptNotKnown = new Predicate("respond-Unknown-concept", args); //preconditions Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansConceptNotKnown); //effects Predicate ansCNKnown = new Predicate("respond-Unknown-concept", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansCNKnown); Update popAgenda = new Update("popAgenda"); //make rule UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); //add rule to rule factory factoryRules.Add(rule); } catch (Exception) { } //=========================================================== //accomodate system reply for utterance not understood try { List<object> args = new List<object>(); // args.push_back(conceptName); Predicate ansNotUnderstood = new Predicate("respond-Not-Understood", args); //preconditions Precondition firstOnAgenda = new Precondition("firstOnAgenda", ansNotUnderstood); //effects Predicate ansNotUnderstanding = new Predicate("respond-Not-Understood", da.logicalForm.Arguments); Update addNextMove = new Update("addNextMove", ansNotUnderstanding); Update popAgenda = new Update("popAgenda"); //make rule UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); //add rule to rule factory factoryRules.Add(rule); } catch (Exception) { } //factoryRules.push_back(rule); return factoryRules; }
public List<UpdateRule> createRules(InformationState IS) { List<UpdateRule> factoryRules = new List<UpdateRule>(); Property p; p = IS.getPropertyValueOfPath(DefineConstants.agentDialogueActs); List<object> systemDialogueActs = p.DataVector; // cerr << " ADARF : number of sda " << systemDialogueActs->size()<< std::endl; foreach (object sda in systemDialogueActs) { DialogueAct da = (DialogueAct)(sda); //rule to accomodate system greet in response to user greet /* try { std::vector<boost::any> args; args.push_back((da->getSender()) ); args.push_back(da->getAddressee()); //predicate greet( system, user) Predicate systemGreet("Greet-open", args); //preconditions //boost::shared_ptr<Precondition> notGreeted = boost::shared_ptr<Precondition>(new Precondition("isNotIntegratedMove", systemGreet)); boost::shared_ptr<Precondition> firstOnAgenda = boost::shared_ptr<Precondition>(new Precondition("firstOnAgenda", systemGreet)); //effects boost::shared_ptr<Update> addNextMove = boost::shared_ptr<Update>(new Update("addNextMove", systemGreet)); // downdate agenda boost::shared_ptr<Update> popAgenda = boost::shared_ptr<Update>(new Update("popAgenda")); boost::shared_ptr<Update> addInIntegraedMoves = boost::shared_ptr<Update>(new Update("addInIntegraedMoves",systemGreet)); std::string grt = "Greet-open"; boost::shared_ptr<Update> socialContext = boost::shared_ptr<Update>(new Update("commPressure",grt)); boost::shared_ptr<UpdateRule> rule = boost::shared_ptr<UpdateRule>(new UpdateRule() ); // rule->addPrecondition(notGreeted); rule->addPrecondition(firstOnAgenda); rule->addEffect(addNextMove); rule->addEffect(popAgenda); rule->addEffect(addInIntegraedMoves); rule->addEffect(socialContext); factoryRules.push_back(rule); std::vector<boost::any> args2; Predicate exp("Greet-open",args2); boost::shared_ptr<Update> expected = boost::shared_ptr<Update>(new Update("addExpected",exp)); rule->addEffect(expected); } catch(boost::exception &e) { } */ try { //preconditions Precondition firstOnAgenda = new Precondition("firstOnAgenda", da.logicalForm); //effects Update addNextMove = new Update("addNextMove", da.logicalForm); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //update rule UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); if (da.getID() == "Self-Introduction") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); Predicate exp = new Predicate("Self-Introduction", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } if (da.getID() == "Commissive-Offer") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); Predicate exp = new Predicate("YES-NO-Answer", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } else if (da.getID() == "Information-Seeking-Function") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); string predicateName = null; if (da.logicalForm.Functor == "WHQ-WHICH-Resource-Choice") { predicateName = "Resource-Choice"; object resourceClass = da.logicalForm.Arguments[1]; // args2.push_back(resourceClass); } if(predicateName != null) { Predicate exp = new Predicate(predicateName, args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } } else if (da.getID() == "Request-Action-Choice") { List<object> args = new List<object>(); string predicateName = "Collective-Obligation"; Predicate exp = new Predicate(predicateName, args); Update expected = new Update("addExpected", exp); //rule->addEffect(expected); } else if (da.getID() == "Ask") { List<object> args2 = new List<object>(); Predicate exp = new Predicate("Inform", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } else if (da.getID() == "Initial-Greet") { List<object> args = new List<object>(); args.Add(da.getAddressee()); string self = "Self"; args.Add(self); List<object> args2 = new List<object>(); Predicate exp = new Predicate("Greet-open", args); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } factoryRules.Add(rule); } catch (Exception) { } } return factoryRules; }
public List<UpdateRule> createRules(DialogueAct da, InformationState IS) { List<UpdateRule> factoryRules = new List<UpdateRule>(); try { //preconditions Precondition firstOnAgenda = new Precondition("firstOnAgenda", da.logicalForm); //effects Update addNextMove = new Update("addNextMove", da.logicalForm); Update popAgenda = new Update("popAgenda"); Update addInIntegraedMoves = new Update("addInIntegraedMoves", da.logicalForm); //update rule UpdateRule rule = new UpdateRule(); // rule->addPrecondition(notAsked); rule.addPrecondition(firstOnAgenda); rule.addEffect(addNextMove); rule.addEffect(popAgenda); rule.addEffect(addInIntegraedMoves); if (da.getID() == "Self-Introduction") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); Predicate exp = new Predicate("Self-Introduction", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } if (da.getID() == "Commissive-Offer") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); Predicate exp = new Predicate("YES-NO-Answer", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } else if (da.getID() == "Information-Seeking-Function") { Update expected = null; string predicateName; if (da.logicalForm.Functor== "WHQ-WHICH-Resource-Choice") { List<object> args2 = new List<object>(); string addressee = da.getAddressee(); args2.Add(addressee); predicateName = "Resource-Choice"; Predicate exp = new Predicate(predicateName, args2); expected = new Update("addExpected", exp); } else if (da.getCommunicativeFunction() == "Request-Action-Choice") { List<object> args = new List<object>(); predicateName = "Collective-Obligation"; Predicate exp = new Predicate(predicateName, args); expected = new Update("addExpected", exp); } // adding the effect if it is not null if(expected!= null) { rule.addEffect(expected); } } else if (da.getID() == "Ask") { List<object> args2 = new List<object>(); Predicate exp = new Predicate("Inform", args2); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } else if (da.getID() == "Initial-Greet") { List<object> args = new List<object>(); args.Add(da.getAddressee()); string self = "Self"; args.Add(self); List<object> args2 = new List<object>(); Predicate exp = new Predicate("Greet-open", args); Update expected = new Update("addExpected", exp); rule.addEffect(expected); } factoryRules.Add(rule); } catch (Exception) { } return factoryRules; }
public abstract void apply(ref InformationState IS);