Esempio n. 1
0
        /// <summary>
        /// Converts the Algebra to a Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern gp = _inner.ToGraphPattern();

            if (gp.HasModifier)
            {
                GraphPattern p = new GraphPattern();
                p.AddGraphPattern(gp);
                p.AddAssignment(new BindPattern(_var, _expr));
                return(p);
            }
            else
            {
                gp.AddAssignment(new BindPattern(_var, _expr));
                return(gp);
            }
        }
        private static void AddTriplePattern(GraphPattern graphPattern, ITriplePattern tp)
        {
            switch (tp.PatternType)
            {
            case TriplePatternType.Match:
            case TriplePatternType.Path:
            case TriplePatternType.PropertyFunction:
            case TriplePatternType.SubQuery:
                graphPattern.AddTriplePattern(tp);
                break;

            case TriplePatternType.LetAssignment:
            case TriplePatternType.BindAssignment:
                graphPattern.AddAssignment((IAssignmentPattern)tp);
                break;

            case TriplePatternType.Filter:
                graphPattern.AddFilter(((IFilterPattern)tp).Filter);
                break;
            }
        }