Esempio n. 1
0
        /// <summary>
        /// Reads a memory store by trying to dereference the given Uri
        /// </summary>
        public static RDFMemoryStore FromUri(Uri uri, int timeoutMilliseconds = 20000)
        {
            RDFMemoryStore result = new RDFMemoryStore();

            if (uri?.IsAbsoluteUri ?? false)
            {
                Uri remappedUri = RDFModelUtilities.RemapUriForDereference(uri);
                try
                {
                    HttpWebRequest webRequest = WebRequest.CreateHttp(remappedUri);
                    webRequest.MaximumAutomaticRedirections = 3;
                    webRequest.AllowAutoRedirect            = true;
                    webRequest.Timeout = timeoutMilliseconds;
                    //N-QUADS
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/n-quads");
                    //TRIX
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/trix");

                    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                    if (webRequest.HaveResponse)
                    {
                        //N-QUADS
                        if (string.IsNullOrEmpty(webResponse.ContentType) ||
                            webResponse.ContentType.Contains("application/n-quads"))
                        {
                            result = FromStream(RDFStoreEnums.RDFFormats.NQuads, webResponse.GetResponseStream());
                        }

                        //TRIX
                        else if (webResponse.ContentType.Contains("application/trix"))
                        {
                            result = FromStream(RDFStoreEnums.RDFFormats.TriX, webResponse.GetResponseStream());
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new RDFStoreException("Cannot read RDF memory store from Uri because: " + ex.Message);
                }
            }
            else
            {
                throw new RDFStoreException("Cannot read RDF memory store from Uri because given \"uri\" parameter is null, or it does not represent an absolute Uri.");
            }

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a graph by trying to dereference the given Uri
        /// </summary>
        public static RDFGraph FromUri(Uri uri, int timeoutMilliseconds = 20000)
        {
            var result = new RDFGraph();

            if (uri != null && uri.IsAbsoluteUri)
            {
                uri = RDFModelUtilities.RemapUriForDereference(uri);
                try
                {
                    HttpWebRequest webRequest = WebRequest.CreateHttp(uri);
                    webRequest.MaximumAutomaticRedirections = 3;
                    webRequest.AllowAutoRedirect            = true;
                    webRequest.Timeout = timeoutMilliseconds;
                    //RDF/XML
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/rdf+xml");
                    //TURTLE
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "text/turtle");
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/turtle");
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/x-turtle");
                    //N-TRIPLES
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/n-triples");
                    //TRIX
                    webRequest.Headers.Add(HttpRequestHeader.Accept, "application/trix");

                    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                    if (webRequest.HaveResponse)
                    {
                        //RDF/XML
                        if (string.IsNullOrEmpty(webResponse.ContentType) ||
                            webResponse.ContentType.Contains("application/rdf+xml"))
                        {
                            result = FromStream(RDFModelEnums.RDFFormats.RdfXml, webResponse.GetResponseStream(), webRequest.Address);
                        }

                        //TURTLE
                        else if (webResponse.ContentType.Contains("text/turtle") ||
                                 webResponse.ContentType.Contains("application/turtle") ||
                                 webResponse.ContentType.Contains("application/x-turtle"))
                        {
                            result = FromStream(RDFModelEnums.RDFFormats.Turtle, webResponse.GetResponseStream(), webRequest.Address);
                        }

                        //N-TRIPLES
                        else if (webResponse.ContentType.Contains("application/n-triples"))
                        {
                            result = FromStream(RDFModelEnums.RDFFormats.NTriples, webResponse.GetResponseStream(), webRequest.Address);
                        }

                        //TRIX
                        else if (webResponse.ContentType.Contains("application/trix"))
                        {
                            result = FromStream(RDFModelEnums.RDFFormats.TriX, webResponse.GetResponseStream(), webRequest.Address);
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw new RDFModelException("Cannot read RDF graph from Uri because: " + ex.Message);
                }
            }
            else
            {
                throw new RDFModelException("Cannot read RDF graph from Uri because given \"uri\" parameter is null, or it does not represent an absolute Uri.");
            }

            return(result);
        }