コード例 #1
0
        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);
            }
        }