public async Task <IActionResult> GetResources([FromQuery] QueryStringParameters queryStringParametersDto)
        {
            Parameters parameters =
                _parametersProcessorService.ProcessParameters(Request.RouteValues, Request.QueryString);
            string?query = _sparqlFactoryService.GetFinalQuery(
                _endpointService.GetEntryResourceQuery(parameters.RouteParameters.Endpoint,
                                                       parameters.RouteParameters.Graph), parameters);

            if (query != null)
            {
                var sparqlResults =
                    await _endpointService.ExecuteSelectSparqlQueryAsync(parameters.RouteParameters.Endpoint,
                                                                         parameters.RouteParameters.Graph, query);

                if (sparqlResults != null)
                {
                    CurieVm curiesVm = _resultFormatterService.FormatSparqlResultToCurieList(sparqlResults);
                    return(Ok(curiesVm));
                }
            }

            return(NotFound(new CustomErrorVm()
            {
                CustomErrorMessage =
                    $"No results were found! Check endpoint configuration at {UrlHelperClass.GetEndpointUrl(Request.GetEncodedUrl())}.",
                GeneratedQuery = query
            }));
        }
        public async Task <IActionResult> GetConcreteClass([FromQuery] QueryStringParameters queryStringParametersDto)
        {
            Parameters parameters =
                _parametersProcessorService.ProcessParameters(Request.RouteValues, Request.QueryString);
            string?query = _sparqlFactoryService.GetFinalSelectQueryForClass(parameters);

            if (query != null)
            {
                var sparqlResults =
                    await _endpointService.ExecuteSelectSparqlQueryAsync(parameters.RouteParameters.Endpoint,
                                                                         parameters.RouteParameters.Graph, query);

                if (sparqlResults != null)
                {
                    CurieVm curiesVm = _resultFormatterService.FormatSparqlResultToCurieList(sparqlResults);
                    return(Ok(curiesVm));
                }
            }

            return(NotFound(new CustomErrorVm()
            {
                CustomErrorMessage = "No results were found!",
                GeneratedQuery = query
            }));
        }
        public CurieVm FormatSparqlResultToCurieList(IEnumerable <SparqlResult> sparqlResults)
        {
            CurieVm curieVm = new CurieVm();

            foreach (var sparqlResult in sparqlResults)
            {
                string key   = sparqlResult.FirstOrDefault().Key;
                string value = sparqlResult.Value(key).ToString();
                if (!_namespaceFactoryService.GetQnameFromAbsoluteUri(value, out var qname))
                {
                    continue;
                }
                curieVm.Curies.Add(HttpUtility.UrlDecode(qname));
            }

            return(curieVm);
        }