private System.Net.Http.Formatting.MediaTypeFormatter theFormatter <T>(T value, string mediaType)
 {
     System.Net.Http.Formatting.MediaTypeFormatter formatter = null;
     if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_JSON)
     {
         formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter();
     }
     else if (mediaType == OSLC4Net.Core.Model.OslcMediaType.APPLICATION_RDF_XML)
     {
         ISet <System.Net.Http.Formatting.MediaTypeFormatter> formatters =
             new HashSet <System.Net.Http.Formatting.MediaTypeFormatter>();
         formatters.Add(new RdfXmlMediaTypeFormatter());
         formatter = new System.Net.Http.Formatting.MediaTypeFormatterCollection(formatters).FindWriter(value.GetType(),
                                                                                                        new System.Net.Http.Headers.MediaTypeHeaderValue(mediaType));
     }
     return(formatter);
 }
        public IEnumerable <T> DeserializeCollection <T>(
            string strRDF,
            IEnumerable <T> value,
            string contentType,
            string descriptionAbout  = null,
            string responseInfoAbout = null,
            string nextPageAbout     = null) where T : class
        {
            if (String.IsNullOrEmpty(descriptionAbout))
            {
                descriptionAbout = "http://com/undefined/descriptionAbout";
            }

            if (String.IsNullOrEmpty(responseInfoAbout))
            {
                responseInfoAbout = "http://com/undefined/responseInfoAbout";
            }

            if (String.IsNullOrEmpty(responseInfoAbout))
            {
                responseInfoAbout = "http://com/undefined/nextPageAbout";
            }

            Stream       stream  = new MemoryStream();
            StreamWriter writer  = new StreamWriter(stream);
            HttpContent  content = new StreamContent(stream);

            System.Net.Http.Formatting.MediaTypeFormatter formatter = null;

            if (contentType == OslcMediaType.APPLICATION_JSON)
            {
                JsonValue json = OSLC4Net.Core.JsonProvider.JsonHelper.CreateJson(
                    descriptionAbout,
                    responseInfoAbout,
                    nextPageAbout,
                    null,
                    value,
                    null);

                formatter = new OSLC4Net.Core.JsonProvider.JsonMediaTypeFormatter(json, false);
                content.Headers.ContentType = OslcMediaType.APPLICATION_JSON_TYPE;
            }
            else if (contentType == OslcMediaType.APPLICATION_RDF_XML)
            {
                IGraph rdfGraph = DotNetRdfHelper.CreateDotNetRdfGraph(
                    descriptionAbout,
                    responseInfoAbout,
                    nextPageAbout,
                    null,
                    value,
                    null);

                formatter = new RdfXmlMediaTypeFormatter(rdfGraph);
                content.Headers.ContentType = OslcMediaType.APPLICATION_RDF_XML_TYPE;
            }

            if (formatter == null)
            {
                return(null);
            }

            writer.Write(strRDF);
            writer.Flush();

            stream.Position = 0;

            return(formatter.ReadFromStreamAsync(typeof(List <T>), stream, content, null).Result as IEnumerable <T>);
        }