public TripleStore ExecuteTripleStore(TripleStore defaultStore) { MemoryTripleStore results = new MemoryTripleStore(); if (HasPatterns) { IEnumerator solutions = defaultStore.Solve(this); while (solutions.MoveNext()) { QuerySolution solution = (QuerySolution)solutions.Current; foreach (PatternTerm term in DescribeTerms) { if (term is Variable) { ResourceDescription description = defaultStore.GetDescriptionOf(solution[((Variable)term).Name], this.BoundingStrategy); results.Add(description); } } } } foreach (PatternTerm term in DescribeTerms) { if (term is UriRef) { ResourceDescription description = defaultStore.GetDescriptionOf((UriRef)term, this.BoundingStrategy); results.Add(description); } else { if (!HasPatterns) { throw new SparqlException("DESCRIBE query has no patterns but requests description of a variable"); } } } return(results); }