/// <summary> /// Get the intermediate result tables of the given pattern group /// </summary> internal static void EvaluatePatterns(RDFConstructQuery query, RDFPatternGroup patternGroup, Object graphOrStore) { query.PatternResultTables[patternGroup] = new List <DataTable>(); //Iterate over the patterns of the pattern group foreach (RDFPattern pattern in patternGroup.Patterns) { //Apply the pattern to the graph/store DataTable patternResultsTable = graphOrStore is RDFGraph?RDFQueryEngine.ApplyPattern(pattern, (RDFGraph)graphOrStore) : RDFQueryEngine.ApplyPattern(pattern, (RDFStore)graphOrStore); //Set the name and the optionality metadata of the result datatable patternResultsTable.TableName = pattern.ToString(); patternResultsTable.ExtendedProperties.Add("IsOptional", pattern.IsOptional); patternResultsTable.ExtendedProperties.Add("JoinAsUnion", pattern.JoinAsUnion); //Save the result datatable query.PatternResultTables[patternGroup].Add(patternResultsTable); } }