/// <summary>
        /// Converts the Algebra to a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p = new GraphPattern();

            p.AddTriplePattern(new TriplePattern(new VariablePattern("?s"), new VariablePattern("?p"), new VariablePattern("?o")));
            return(p);
        }
        /// <summary>
        /// Converts the algebra back into a Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public override GraphPattern ToGraphPattern()
        {
            GraphPattern gp = new GraphPattern();

            gp.AddTriplePattern(new PropertyPathPattern(PathStart, Path, PathEnd));
            return(gp);
        }
Esempio n. 3
0
        public void SparqlFormattingOptionalAtRoot()
        {
            SparqlQuery q = new SparqlQuery {
                QueryType = SparqlQueryType.Select
            };

            q.AddVariable(new SparqlVariable("s", true));

            GraphPattern gp = new GraphPattern();

            gp.IsOptional = true;
            gp.AddTriplePattern(new TriplePattern(new VariablePattern("s"), new VariablePattern("p"), new VariablePattern("o")));
            q.RootGraphPattern = gp;

            String toStr = q.ToString();

            Console.WriteLine("ToString() Form:");
            Console.WriteLine(toStr);
            Assert.AreEqual(2, toStr.ToCharArray().Where(c => c == '{').Count());
            Assert.AreEqual(2, toStr.ToCharArray().Where(c => c == '}').Count());
            Console.WriteLine();

            SparqlFormatter formatter = new SparqlFormatter();
            String          fmtStr    = formatter.Format(q);

            Console.WriteLine("SparqlFormatter Form:");
            Console.WriteLine(fmtStr);
            Assert.AreEqual(2, fmtStr.ToCharArray().Where(c => c == '{').Count());
            Assert.AreEqual(2, fmtStr.ToCharArray().Where(c => c == '}').Count());
        }
Esempio n. 4
0
        /// <summary>
        /// Transforms the Algebra back into a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public override GraphPattern ToGraphPattern()
        {
            GraphPattern        gp = new GraphPattern();
            PropertyPathPattern pp = new PropertyPathPattern(this.PathStart, new FixedCardinality(this.Path, 0), this.PathEnd);

            gp.AddTriplePattern(pp);
            return(gp);
        }
Esempio n. 5
0
        /// <summary>
        /// Transforms the Algebra into a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public override GraphPattern ToGraphPattern()
        {
            GraphPattern        gp = new GraphPattern();
            PropertyPathPattern pp = new PropertyPathPattern(PathStart, new ZeroOrMore(Path), PathEnd);

            gp.AddTriplePattern(pp);
            return(gp);
        }
Esempio n. 6
0
        /// <summary>
        /// Converts the BGP back to a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p = new GraphPattern();

            foreach (ITriplePattern tp in this._triplePatterns)
            {
                p.AddTriplePattern(tp);
            }
            return(p);
        }
Esempio n. 7
0
        /// <summary>
        /// Converts the BGP to a Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public virtual GraphPattern ToGraphPattern()
        {
            GraphPattern p = new GraphPattern();

            foreach (ITriplePattern tp in _triplePatterns)
            {
                p.AddTriplePattern(tp);
            }
            return(p);
        }
        /// <summary>
        /// Converts the Algebra to a Graph Pattern
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern p       = new GraphPattern();
            String       subjVar = (!_graphVar.Equals("s")) ? "?s" : "?subj";
            String       predVar = (!_graphVar.Equals("p")) ? "?p" : "?pred";
            String       objVar  = (!_graphVar.Equals("o")) ? "o" : "?obj";

            p.AddTriplePattern(new TriplePattern(new VariablePattern(subjVar), new VariablePattern(predVar), new VariablePattern(objVar)));
            p.IsGraph        = true;
            p.GraphSpecifier = new VariableToken("?" + _graphVar, 0, 0, 0);
            return(p);
        }
Esempio n. 9
0
        /// <summary>
        /// Transforms the Algebra back into a Graph Pattern.
        /// </summary>
        /// <returns></returns>
        public GraphPattern ToGraphPattern()
        {
            GraphPattern        gp = new GraphPattern();
            PropertyPathPattern pp;

            if (_inverse)
            {
                pp = new PropertyPathPattern(PathStart, new NegatedSet(Enumerable.Empty <Property>(), _properties.Select(p => new Property(p))), PathEnd);
            }
            else
            {
                pp = new PropertyPathPattern(PathStart, new NegatedSet(_properties.Select(p => new Property(p)), Enumerable.Empty <Property>()), PathEnd);
            }
            gp.AddTriplePattern(pp);
            return(gp);
        }
Esempio n. 10
0
        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;
            }
        }
        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);
        }