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); }
/// <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()); }
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); }
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); }
/// <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; }
/// <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(); }