/// <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); }
/// <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); }