Exemplo n.º 1
0
        public async Task <ActionResult> QueryResult(QueryInfo queryInfo)
        {
            if (queryInfo == null)
            {
                return(BadRequest());
            }
            ViewData[nameof(SearchInfo)] = queryInfo;
            object results;

            try
            {
                /*** validation ***/
                queryInfo.Validate();

                /*** query preparation ***/
                SparqlRemoteEndpoint endpoint = SearchPreparing.CreateEndpoint(queryInfo.Endpoints[0], queryInfo.Timeout, queryInfo.DefaultGraph);
                SparqlQuery          query    = QueryParsing.ParseQuery(queryInfo.QueryString);

                /*** query processing ***/
                results = await QueryProcessing.ProcessQuery(query, endpoint);

                //ViewData["ExecutionTime"] = query.QueryExecutionTime;
            }
            catch (BrowserException e)
            {
                return(View("QueryResultError", e.Message));
            }
            catch (Exception)
            {
                //TODO: better text
                return(View("QueryResultError", "Unknown error..."));
            }

            /*** result processing ***/
            if (results is SparqlResultSet)
            {
                return(View("QueryResultSet", (SparqlResultSet)results));
            }
            else if (results is IGraph)
            {
                return(View("QueryResultGraph", (IGraph)results));
            }
            else if (results is AsyncError)
            {
                return(View("QueryResultError", ErrorProcessing.ProcessAsyncError((AsyncError)results)));
            }
            else
            {
                //TODO: better text
                return(View("QueryResultError", "Unknown error..."));
            }
        }