예제 #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..."));
            }
        }
예제 #2
0
        public async Task <ActionResult> EntityResultOnePredicate(OnePredicateInfo predicateInfo)
        {
            if (predicateInfo == null)
            {
                return(BadRequest());
            }
            ViewData[nameof(SearchInfo)] = predicateInfo;
            var queryResultWrappertList = new PredicateResultWrapperList();

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

                /*** search preparation ***/
                SparqlRemoteEndpoint endpoint = SearchPreparing.CreateEndpoint(predicateInfo.Endpoints[0], predicateInfo.Timeout, predicateInfo.DefaultGraph);

                /*** preparing the predicate ***/
                queryResultWrappertList.InsertPredicateWrapper(predicateInfo.EntityIri, predicateInfo.PredicateIri, endpoint, predicateInfo.ExpectedObjects);

                /*** getting objects ***/
                await ResultRetrieving.RetrieveObjects(queryResultWrappertList, predicateInfo.EntityIri, predicateInfo.Language);

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

            return(View("EntityResultOnePredicate", queryResultWrappertList));
        }
예제 #3
0
        public async Task <ActionResult> EntityResultMultipleEndpoints(EntityInfo entityInfo)
        {
            if (entityInfo == null)
            {
                return(BadRequest());
            }
            var queryResultWrappertList = new PredicateResultWrapperList();

            try
            {
                /*** validation ***/
                entityInfo.Validate();
                ViewData[nameof(SearchInfo)] = entityInfo;

                /*** search preparation ***/
                List <SparqlRemoteEndpoint> endpoints = SearchPreparing.CreateEndpoints(entityInfo.Endpoints, entityInfo.Timeout);

                /*** getting all the predicates ***/
                await ResultRetrieving.RetrievePredicatesAndObjectCounts(queryResultWrappertList, entityInfo.EntityIri, entityInfo.Language, endpoints);

                queryResultWrappertList.ShortenToNthSubset(entityInfo.ResultsOnPage, entityInfo.PageNumber);

                /*** getting objects ***/
                await ResultRetrieving.RetrieveObjects(queryResultWrappertList, entityInfo.EntityIri, entityInfo.Language, entityInfo.MaxObjects);

                //ViewData["ExecutionTime"] = query.QueryExecutionTime;
                ViewData[nameof(EntityInfo.EntityIri)] = entityInfo.EntityIri;
            }
            catch (BrowserException e)
            {
                return(View("QueryResultError", e.Message));
            }
            catch (InternalErrorException)
            {
                return(StatusCode(503));
            }

            return(View("EntityResultOnlyFive", queryResultWrappertList));

            //return View("EntityResultMultipleEndpoints", queryResultWrappertList);
        }
예제 #4
0
        private static async Task <Dictionary <string, int> > RetrievePopularPropertiesFromEndpoint()
        {
            string errorMessage = "";
            object results      = null;

            try
            {
                SparqlQuery          query    = QueryParsing.ParseQuery(QueryCreating.GetQueryTemplateCopy(QueryTemplates.SelectPopularProperties));
                SparqlRemoteEndpoint endpoint = SearchPreparing.CreateEndpoint(Config.LOV_SPARQL_ENDPOINT, Config.LOV_PREDICATES_SEARCH_TIMEOUT);
                results = await QueryProcessing.ProcessQuery(query, endpoint);
            }
            catch (BrowserException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new BrowserException("An unexpected error occured while retrieving the list of popular predicates.", e);
            }

            if (results is SparqlResultSet)
            {
                return(ResultSetToDictionary((SparqlResultSet)results));
            }
            else if (results is AsyncError)
            { /*TODO: remove exceptions */
                throw ((AsyncError)results).Error.InnerException;
                //errorMessage += ResultProcessing.ProcessAsyncError((AsyncError)results);
                //return null;
            }
            /*TODO: remove exceptions*/
            throw new Exception(errorMessage);

            //otherwise it should be null and errorMessage should be already set
            //return null;
        }