public IEnumerable <SparqlResult> Run(IEnumerable <SparqlResult> results, SparqlResultSet sparqlResultSet) { if (Group != null) { var groupedResults = Group(results.Select(r => r.Clone())); if (sparqlSolutionModifierHaving != null) { groupedResults = sparqlSolutionModifierHaving.Having4CollectionGroups(groupedResults, q); } if (sparqlSolutionModifierOrder != null) { groupedResults = sparqlSolutionModifierOrder.Order4Grouped(groupedResults).Cast <SparqlGroupOfResults>(); } var res = groupedResults.Cast <SparqlResult>(); if (Select != null) { res = Select.Run(res, sparqlResultSet, true); } if (LimitOffset != null) { res = LimitOffset(res); } return(res); } else { if (sparqlSolutionModifierHaving != null) { results = sparqlSolutionModifierHaving.Having(results, q); } if (sparqlSolutionModifierOrder != null) { results = sparqlSolutionModifierOrder.Order(results.Select(r => r.Clone())); } if (Select != null) { results = Select.Run(results, sparqlResultSet, false); } if (LimitOffset != null) { results = LimitOffset(results); } return(results); } }