/// <summary> /// Formats a SPARQL GROUP BY Clause /// </summary> /// <param name="groupBy">GROUP BY Clause</param> /// <returns></returns> protected virtual String FormatGroupBy(ISparqlGroupBy groupBy) { StringBuilder output = new StringBuilder(); bool isAssignment = groupBy.AssignVariable != null && (groupBy.Expression.Variables.Count() != 1 || !groupBy.AssignVariable.Equals(groupBy.Expression.Variables.FirstOrDefault())); if (isAssignment) { output.Append('('); } output.Append(this.FormatExpression(groupBy.Expression)); if (isAssignment) { output.Append(" AS ?"); output.Append(groupBy.AssignVariable); output.Append(')'); } if (groupBy.Child != null) { output.Append(' '); output.Append(this.FormatGroupBy(groupBy.Child)); } return(output.ToString()); }
private void BuildGroupByClauses(SparqlQuery query) { ISparqlGroupBy rootGroup = null; ISparqlGroupBy lastGroup = null; foreach (var buildGroup in _buildGroups) { if (rootGroup == null) { rootGroup = lastGroup = buildGroup(Prefixes); } else { lastGroup.Child = buildGroup(Prefixes); } } query.GroupBy = rootGroup; }
/// <summary> /// Formats a SPARQL GROUP BY Clause /// </summary> /// <param name="groupBy">GROUP BY Clause</param> /// <returns></returns> protected virtual String FormatGroupBy(ISparqlGroupBy groupBy) { StringBuilder output = new StringBuilder(); if (groupBy.AssignVariable != null) { output.Append('('); } output.Append(this.FormatExpression(groupBy.Expression)); if (groupBy.AssignVariable != null) { output.Append(" AS ?"); output.Append(groupBy.AssignVariable); output.Append(')'); } if (groupBy.Child != null) { output.Append(' '); output.Append(this.FormatGroupBy(groupBy.Child)); } return(output.ToString()); }
/// <summary> /// Creates a new Group By /// </summary> /// <param name="pattern">Pattern</param> /// <param name="grouping">Grouping to use</param> public GroupBy(ISparqlAlgebra pattern, ISparqlGroupBy grouping) { this._pattern = pattern; this._grouping = grouping; }
/// <summary> /// Formats a SPARQL GROUP BY Clause /// </summary> /// <param name="groupBy">GROUP BY Clause</param> /// <returns></returns> protected virtual String FormatGroupBy(ISparqlGroupBy groupBy) { StringBuilder output = new StringBuilder(); if (groupBy.AssignVariable != null) { output.Append('('); } output.Append(this.FormatExpression(groupBy.Expression)); if (groupBy.AssignVariable != null) { output.Append(" AS ?"); output.Append(groupBy.AssignVariable); output.Append(')'); } if (groupBy.Child != null) { output.Append(' '); output.Append(this.FormatGroupBy(groupBy.Child)); } return output.ToString(); }
/// <summary> /// Creates a new Group By /// </summary> /// <param name="pattern">Pattern</param> /// <param name="grouping">Grouping to use</param> /// <param name="aggregates">Aggregates to calculate</param> public GroupBy(ISparqlAlgebra pattern, ISparqlGroupBy grouping, IEnumerable <SparqlVariable> aggregates) { this._pattern = pattern; this._grouping = grouping; this._aggregates.AddRange(aggregates.Where(var => var.IsAggregate)); }