예제 #1
0
        /// <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());
        }
예제 #2
0
        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;
        }
예제 #3
0
        /// <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());
        }
예제 #4
0
 /// <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;
 }
예제 #5
0
파일: GroupBy.cs 프로젝트: jmahmud/RDFer
 /// <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;
 }
예제 #6
0
        /// <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();
        }
예제 #7
0
 /// <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));
 }