public CGComplexExpression(CGExpression expression, string role) : base(expression.Node, role) { this.Verb = expression; this.Patient = new CGPredicate(); this.Goal = new CGPredicate(); this.Result = new CGPredicate(); }
public CGExpression BuildSubjectExpression(CGNode target, string role) { CGExpression expression = new CGExpression(target, role); expression.Mods = this.FindByHead(target.id, "mod"); expression.Locations = this.FindByHead(target.id, "location"); expression.Degree = this.FindByHead(target.id, "degree"); expression.Manner = this.FindByHead(target.id, "manner"); expression.Poss = this.FindByHead(target.id, "poss"); var ins = this.Relations.Where(c => c.Tail == target.id); foreach (var item in ins) { var head = this.Nodes.Where(c => c.id == item.Head).Single(); if (item.conceptualrole != "agent" && item.conceptualrole != "theme" && item.conceptualrole != "source" && item.conceptualrole != "result" && item.conceptualrole != "experiencer" && item.conceptualrole != "patient" && item.conceptualrole != "manner" && item.conceptualrole != "mod" && item.conceptualrole != "location" && item.conceptualrole != "attribute" && item.conceptualrole != "prep-to" && item.conceptualrole != "asset" && item.conceptualrole != "co-patient" && item.conceptualrole != "poss" && item.conceptualrole != "op" && item.conceptualrole != "pivot" && item.conceptualrole != "topic" && item.conceptualrole != "goal" && item.conceptualrole != "compared-to" ) { throw new ApplicationException("delete"); } } var outs = this.Relations.Where(c => c.Head == target.id); foreach (var item in outs) { if (item.conceptualrole != "mod" && item.conceptualrole != "poss" && item.conceptualrole != "location" && item.conceptualrole != "asset") { throw new ApplicationException("delete"); } } return(expression); }
public CGExpression BuildVerbExpression(CGNode target, string role, CGNode previous) { CGExpression expression = new CGExpression(target, role); expression.Mods = this.FindByHead(target.id, "mod"); expression.Locations = this.FindByHead(target.id, "location"); expression.Degree = this.FindByHead(target.id, "degree"); expression.Manner = this.FindByHead(target.id, "manner"); var ins = this.Relations.Where(c => c.Tail == target.id && (previous != null && c.Head != previous.id)); foreach (var item in ins) { var head = this.Nodes.Where(c => c.id == item.Head).Single(); if (item.conceptualrole == "patient") { var tmp = this.Relations.Where(c => c.Tail == item.Head).Count(); if (tmp == 0) { expression.Adverbs.Add(head); } } else if (item.conceptualrole != "mod" && item.conceptualrole != "location" && item.conceptualrole != "degree" && item.conceptualrole != "manner" && item.conceptualrole != "agent" && item.conceptualrole != "destination" && item.conceptualrole != "purpose" && item.conceptualrole != "result" && item.conceptualrole != "co-patient" && item.conceptualrole != "experiencer" && item.conceptualrole != "theme" && item.conceptualrole != "goal" && item.conceptualrole != "instrument" && item.conceptualrole != "op") { throw new ApplicationException("delete"); } } var outs = this.Relations.Where(c => c.Head == target.id); foreach (var item in outs) { var tail = this.Nodes.Where(c => c.id == item.Tail).Single(); if (item.conceptualrole != "mod" && item.conceptualrole != "location" && item.conceptualrole != "degree" && item.conceptualrole != "manner" && item.conceptualrole != "agent" && item.conceptualrole != "destination" && item.conceptualrole != "stimulus" && item.conceptualrole != "purpose" && item.conceptualrole != "result" && item.conceptualrole != "patient" && item.conceptualrole != "co-patient" && item.conceptualrole != "experiencer" && item.conceptualrole != "theme" && item.conceptualrole != "goal" && item.conceptualrole != "source" && item.conceptualrole != "topic" && item.conceptualrole != "asset" && item.conceptualrole != "instrument" && item.conceptualrole != "op" && item.conceptualrole != "attribute" && item.conceptualrole != "prep-under" && item.conceptualrole != "predicate" && item.conceptualrole != "end") { throw new ApplicationException("delete"); } } return(expression); }