protected static void RDFWriteSeries(DataRetrievalInfoSeries info, MappedValues row)
        {
            string values;
            values = RDFConstants.RdfDataset + info.MappingSet.DataSet.Description.ToString();
            foreach (var dimensionValue in row.DimensionValues)
            {
                if (!dimensionValue.Key.Id.Equals(info.DimensionAtObservation))
                {
                    values += "/" + dimensionValue.Value;
                }
            }

            values += "/" + row.TimeValue;

            // start series
            info.SeriesWriter.StartSeries(values);

            values = "";

            // write dimensions
            foreach (var dimensionValue in row.DimensionValues)
            {
                if (!dimensionValue.Key.Id.Equals(info.DimensionAtObservation))
                {                    
                    info.SeriesWriter.WriteSeriesKeyValue(dimensionValue.Key.Id, dimensionValue.Value, dimensionValue.Key.CodeList.Version, dimensionValue.Key.CodeList.Id);
                }
            }
        }
        private static bool ProcessedKeySet(
            GroupInformation targetGroup, DataRetrievalInfoSeries info, MappedValues componentValues)
        {
            var current = new ReadOnlyKey(componentValues, info.GroupNameTable);

            if (!targetGroup.KeySet.ContainsKey(current))
            {
                targetGroup.KeySet.Add(current, null);
                return false;
            }

            return true;
        }
 protected static int RDFWriteObservation(DataRetrievalInfoSeries info, MappedValues row, string value)
 {
     // write time and obs value            
     info.SeriesWriter.RDFWriteObservation(row.TimeValue, value);
     return 1;
 }