Esempio n. 1
0
 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();
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }