/// <summary> /// Applies the query to the given SPARQL endpoint /// </summary> public RDFDescribeQueryResult ApplyToSPARQLEndpoint(RDFSPARQLEndpoint sparqlEndpoint) { RDFDescribeQueryResult describeResult = new RDFDescribeQueryResult(this.ToString()); if (sparqlEndpoint != null) { RDFQueryEvents.RaiseDESCRIBEQueryEvaluation(String.Format("Evaluating DESCRIBE query on SPARQL endpoint '{0}'...", sparqlEndpoint)); //Establish a connection to the given SPARQL endpoint using (WebClient webClient = new WebClient()) { //Insert reserved "query" parameter webClient.QueryString.Add("query", HttpUtility.UrlEncode(this.ToString())); //Insert user-provided parameters webClient.QueryString.Add(sparqlEndpoint.QueryParams); //Insert request headers webClient.Headers.Add(HttpRequestHeader.Accept, "application/turtle"); webClient.Headers.Add(HttpRequestHeader.Accept, "text/turtle"); //Send querystring to SPARQL endpoint var sparqlResponse = webClient.DownloadData(sparqlEndpoint.BaseAddress); //Parse response from SPARQL endpoint if (sparqlResponse != null) { using (var sStream = new MemoryStream(sparqlResponse)) { describeResult = RDFDescribeQueryResult.FromRDFGraph(RDFGraph.FromStream(RDFModelEnums.RDFFormats.Turtle, sStream)); } describeResult.DescribeResults.TableName = this.ToString(); } } //Eventually adjust column names (should start with "?") Int32 columnsCount = describeResult.DescribeResults.Columns.Count; for (Int32 i = 0; i < columnsCount; i++) { if (!describeResult.DescribeResults.Columns[i].ColumnName.StartsWith("?")) { describeResult.DescribeResults.Columns[i].ColumnName = "?" + describeResult.DescribeResults.Columns[i].ColumnName; } } RDFQueryEvents.RaiseDESCRIBEQueryEvaluation(String.Format("Evaluated DESCRIBE query on SPARQL endpoint '{0}': Found '{1}' results.", sparqlEndpoint, describeResult.DescribeResultsCount)); } return(describeResult); }
/// <summary> /// Applies the query to the given SPARQL endpoint /// </summary> public RDFDescribeQueryResult ApplyToSPARQLEndpoint(RDFSPARQLEndpoint sparqlEndpoint) { string describeQueryString = this.ToString(); RDFDescribeQueryResult describeResult = new RDFDescribeQueryResult(describeQueryString); if (sparqlEndpoint != null) { //Establish a connection to the given SPARQL endpoint using (WebClient webClient = new WebClient()) { //Insert reserved "query" parameter webClient.QueryString.Add("query", HttpUtility.UrlEncode(describeQueryString)); //Insert user-provided parameters webClient.QueryString.Add(sparqlEndpoint.QueryParams); //Insert request headers webClient.Headers.Add(HttpRequestHeader.Accept, "application/turtle"); webClient.Headers.Add(HttpRequestHeader.Accept, "text/turtle"); //Send querystring to SPARQL endpoint byte[] sparqlResponse = webClient.DownloadData(sparqlEndpoint.BaseAddress); //Parse response from SPARQL endpoint if (sparqlResponse != null) { using (MemoryStream sStream = new MemoryStream(sparqlResponse)) describeResult = RDFDescribeQueryResult.FromRDFGraph(RDFGraph.FromStream(RDFModelEnums.RDFFormats.Turtle, sStream)); describeResult.DescribeResults.TableName = describeQueryString; } } //Eventually adjust column names (should start with "?") int columnsCount = describeResult.DescribeResults.Columns.Count; for (int i = 0; i < columnsCount; i++) { if (!describeResult.DescribeResults.Columns[i].ColumnName.StartsWith("?")) { describeResult.DescribeResults.Columns[i].ColumnName = string.Concat("?", describeResult.DescribeResults.Columns[i].ColumnName); } } } return(describeResult); }