コード例 #1
0
ファイル: SpinSyntax.cs プロジェクト: vermeerlee/dotnetrdf
        internal static INode ToSpinRdf(this ISparqlOrderBy ordering, IGraph g, SpinVariableTable varTable)
        {
            INode o = g.CreateBlankNode();

            INode item = null;

            do
            {
                if (item == null)
                {
                    item = g.CreateBlankNode();
                }
                else
                {
                    INode temp = g.CreateBlankNode();
                    g.Assert(o, RDF.PropertyRest, temp);
                    item     = temp;
                    ordering = ordering.Child;
                }
                g.Assert(o, RDF.PropertyFirst, item);
                //TODO: Convert Expression
                //g.Assert(o, SP.expression, ordering.E
            } while (ordering.Child != null);

            return(o);
        }
コード例 #2
0
ファイル: SparqlFormatter.cs プロジェクト: yuryk53/dotnetrdf
        /// <summary>
        /// Formats a SPARQL ORDER BY Clause
        /// </summary>
        /// <param name="orderBy">ORDER BY Clause</param>
        /// <returns></returns>
        protected virtual String FormatOrderBy(ISparqlOrderBy orderBy)
        {
            StringBuilder output = new StringBuilder();

            if (orderBy.Descending)
            {
                output.Append("DESC(");
                output.Append(this.FormatExpression(orderBy.Expression));
                output.Append(')');
            }
            else
            {
                output.Append("ASC(");
                output.Append(this.FormatExpression(orderBy.Expression));
                output.Append(')');
            }

            if (orderBy.Child != null)
            {
                output.Append(' ');
                output.Append(this.FormatOrderBy(orderBy.Child));
            }

            return(output.ToString());
        }
コード例 #3
0
ファイル: SpinSyntax.cs プロジェクト: mungojam/dotnetrdf-fork
        internal static INode ToSpinRdf(this ISparqlOrderBy ordering, IGraph g, SpinVariableTable varTable)
        {
            INode o = g.CreateBlankNode();

            INode rdfFirst = g.CreateUriNode(new Uri(RdfSpecsHelper.RdfListFirst));
            INode rdfRest  = g.CreateUriNode(new Uri(RdfSpecsHelper.RdfListRest));
            INode rdfNil   = g.CreateUriNode(new Uri(RdfSpecsHelper.RdfListNil));
            INode expr     = g.CreateUriNode(new Uri(SpinPropertyExpression));
            INode item     = null;

            do
            {
                if (item == null)
                {
                    item = g.CreateBlankNode();
                }
                else
                {
                    INode temp = g.CreateBlankNode();
                    g.Assert(o, rdfRest, temp);
                    item     = temp;
                    ordering = ordering.Child;
                }
                g.Assert(o, rdfFirst, item);
                //TODO: Convert Expression
                //g.Assert(o, expr, ordering.E
            } while (ordering.Child != null);

            return(o);
        }
コード例 #4
0
        public void ShouldAllowChainingMultipleVariableAndExpressionOrderings()
        {
            // when
            SparqlQuery sparqlQuery = QueryBuilder.SelectAll()
                                      .Where(BuildSPOPattern)
                                      .OrderBy("s")
                                      .OrderByDescending("p")
                                      .OrderBy("o")
                                      .OrderByDescending(expr => expr.Str(expr.Variable("s")))
                                      .OrderBy(expr => expr.Str(expr.Variable("p")))
                                      .OrderByDescending(expr => expr.Str(expr.Variable("o")))
                                      .BuildQuery();

            // then
            ISparqlOrderBy currentOrdering = sparqlQuery.OrderBy;

            for (int i = 0; i < 6; i++)
            {
                Assert.NotNull(currentOrdering);
                currentOrdering = currentOrdering.Child;
            }
            Assert.Null(currentOrdering);
        }
コード例 #5
0
 /// <summary>
 /// Creates a new Order By clause
 /// </summary>
 /// <param name="pattern">Pattern</param>
 /// <param name="ordering">Ordering</param>
 public OrderBy(ISparqlAlgebra pattern, ISparqlOrderBy ordering)
 {
     this._pattern  = pattern;
     this._ordering = ordering;
 }
コード例 #6
0
        /// <summary>
        /// Formats a SPARQL ORDER BY Clause
        /// </summary>
        /// <param name="orderBy">ORDER BY Clause</param>
        /// <returns></returns>
        protected virtual String FormatOrderBy(ISparqlOrderBy orderBy)
        {
            StringBuilder output = new StringBuilder();

            if (orderBy.Descending)
            {
                output.Append("DESC(");
                output.Append(this.FormatExpression(orderBy.Expression));
                output.Append(')');
            }
            else 
            {
                output.Append("ASC(");
                output.Append(this.FormatExpression(orderBy.Expression));
                output.Append(')');
            }

            if (orderBy.Child != null)
            {
                output.Append(' ');
                output.Append(this.FormatOrderBy(orderBy.Child));
            }

            return output.ToString();
        }
コード例 #7
0
ファイル: OrderBy.cs プロジェクト: jbunzel/MvcRQ_git
 /// <summary>
 /// Creates a new Order By clause
 /// </summary>
 /// <param name="pattern">Pattern</param>
 /// <param name="ordering">Ordering</param>
 public OrderBy(ISparqlAlgebra pattern, ISparqlOrderBy ordering)
 {
     this._pattern = pattern;
     this._ordering = ordering;
 }