Esempio n. 1
0
        /// <summary>
        /// Converts the Algebra back to a SPARQL Query
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p = this._lhs.ToGraphPattern();

            p.AddGraphPattern(this._rhs.ToGraphPattern());
            return(p);
        }
Esempio n. 2
0
        /// <summary>
        /// Converts the Algebra back to a SPARQL Query.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p = _lhs.ToGraphPattern();

            p.AddGraphPattern(_rhs.ToGraphPattern());
            return(p);
        }
Esempio n. 3
0
        /// <summary>
        /// Converts the Algebra back to a SPARQL Query.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p   = _lhs.ToGraphPattern();
            GraphPattern opt = _rhs.ToGraphPattern();

            opt.IsOptional = true;
            if (_filter.Expression is ConstantTerm)
            {
                try
                {
                    if (!_filter.Expression.Evaluate(null, 0).AsSafeBoolean())
                    {
                        opt.Filter = _filter;
                    }
                }
                catch
                {
                    opt.Filter = _filter;
                }
            }
            else
            {
                opt.Filter = _filter;
            }
            p.AddGraphPattern(opt);
            return(p);
        }
Esempio n. 4
0
        /// <summary>
        /// Converts the Algebra back to a Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p = _pattern.ToGraphPattern();
            GraphPattern f = new GraphPattern();

            f.AddFilter(_filter);
            p.AddGraphPattern(f);
            return(p);
        }
Esempio n. 5
0
        /// <summary>
        /// Converts the Minus() back to a MINUS Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p   = _lhs.ToGraphPattern();
            GraphPattern opt = _rhs.ToGraphPattern();

            if (!opt.HasModifier)
            {
                opt.IsMinus = true;
                p.AddGraphPattern(opt);
            }
            else
            {
                GraphPattern parent = new GraphPattern();
                parent.AddGraphPattern(opt);
                parent.IsMinus = true;
                p.AddGraphPattern(parent);
            }
            return(p);
        }
Esempio n. 6
0
        /// <summary>
        /// Converts the Algebra back to a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p   = _lhs.ToGraphPattern();
            GraphPattern opt = _rhs.ToGraphPattern();

            if (_mustExist)
            {
                opt.IsExists = true;
            }
            else
            {
                opt.IsNotExists = true;
            }
            p.AddGraphPattern(opt);
            return(p);
        }
Esempio n. 7
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);
            }
        }
Esempio n. 8
0
 /// <summary>
 /// Converts the Algebra into a Graph Pattern
 /// </summary>
 /// <returns></returns>
 public GraphPattern ToGraphPattern()
 {
     GraphPattern p = new GraphPattern(this._pattern);
     if (!p.HasModifier)
     {
         p.IsService = true;
         p.GraphSpecifier = this._endpointSpecifier;
         return p;
     }
     else
     {
         GraphPattern parent = new GraphPattern();
         parent.IsService = true;
         parent.GraphSpecifier = this._endpointSpecifier;
         parent.AddGraphPattern(p);
         return parent;
     }
 }
Esempio n. 9
0
        /// <summary>
        /// Converts the Algebra back to a SPARQL Query
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p   = this._lhs.ToGraphPattern();
            GraphPattern opt = this._rhs.ToGraphPattern();

            opt.IsOptional = true;
            if (this._filter.Expression is BooleanExpressionTerm)
            {
                if (!this._filter.Expression.EffectiveBooleanValue(null, 0))
                {
                    opt.Filter = this._filter;
                }
            }
            else
            {
                opt.Filter = this._filter;
            }
            p.AddGraphPattern(opt);
            return(p);
        }
        public void SparqlGraphPatternToAlgebra9()
        {
            GraphPattern gp = new GraphPattern();

            gp.IsGraph        = true;
            gp.GraphSpecifier = new VariableToken("g", 0, 0, 1);

            ISparqlAlgebra algebra = gp.ToAlgebra();

            Assert.IsType <Graph>(algebra);

            Graph g = (Graph)algebra;

            Assert.IsAssignableFrom <IBgp>(g.InnerAlgebra);

            // Nest in another graph pattern with same specifier but also with another BGP
            GraphPattern parent = new GraphPattern();

            parent.IsGraph        = true;
            parent.GraphSpecifier = gp.GraphSpecifier;
            parent.AddGraphPattern(gp);
            ITriplePattern tp = new TriplePattern(new VariablePattern("s"), new VariablePattern("p"), new VariablePattern("o"));

            parent.AddTriplePattern(tp);

            // Resulting algebra will keep both graph clauses because of the join
            algebra = parent.ToAlgebra();

            Assert.IsType <Graph>(algebra);
            g = (Graph)algebra;

            Assert.IsType <Join>(g.InnerAlgebra);

            Join join = (Join)g.InnerAlgebra;

            Assert.IsType <Graph>(join.Lhs);

            g = (Graph)join.Lhs;
            Assert.IsAssignableFrom <IBgp>(g.InnerAlgebra);
        }