Exemplo n.º 1
0
        public PropertyGraphModel Transform(PropertyGraphModel graph)
        {
            var result = graph;

            if (WhereClause != null)
            {
                result = WhereClause.Transform(result);
            }

            if (CalculateClause != null)
            {
                result = CalculateClause.Transform(result);
            }

            if (SelectPropsClause != null)
            {
                result = SelectPropsClause.Transform(result);
            }

            if (GroupByClause != null)
            {
                result = GroupByClause.Transform(result);
            }

            if (LayoutClause != null)
            {
                result = LayoutClause.Transform(result);
            }

            result.ClearIfEmpty();

            return(result);
        }
Exemplo n.º 2
0
        private SelectPropsClause ParseSelectPropsClause(ParseTreeNode node)
        {
            var result = new SelectPropsClause();

            foreach (var prop in node.ChildNodes)
            {
                string alias = null;
                if (prop.ChildNodes[1].ChildNodes.Count > 0)
                {
                    alias = prop.ChildNodes[1].ChildNodes[1].ChildNodes[0].Token.ValueString;
                }

                if (string.Equals(prop.ChildNodes[0]?.Term?.Name,
                                  "wildcardIdentifier", StringComparison.InvariantCultureIgnoreCase))
                {
                    if (prop.ChildNodes[0].ChildNodes.Count == 1)
                    {
                        result.AddProp(
                            ParseWildcardIdentifier(prop.ChildNodes[0], alias)
                            );
                    }
                    else
                    {
                        ParseEdgeIdentifier(prop.ChildNodes[0], alias, result);
                    }
                }
                else
                {
                    result.AddProp(
                        ParseSelectExpression(prop.ChildNodes[0], alias)
                        );
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        private void ParseEdgeIdentifier(ParseTreeNode id, string alias, SelectPropsClause result)
        {
            //edge prop
            string firstToken = id.ChildNodes[0].Token.ValueString.ToLower();

            if (firstToken == "edge" || firstToken == "edges")
            {
                if (id.ChildNodes.Count == 2)
                {
                    result.AddEdgeFilter(WildcardOrName(id.ChildNodes[1]), alias);
                    return;
                }
                if (id.ChildNodes.Count == 3)
                {
                    result.AddEdgePropFilter(WildcardOrName(id.ChildNodes[1]),
                                             WildcardOrName(id.ChildNodes[2]), alias);
                    return;
                }
            }

            throw new GraphQuerySyntaxError("unknown property identifier");
        }