示例#1
0
        public T ExecuteScalar <T>(QueryModel queryModel)
        {
            Type t = typeof(T);

            if (t == typeof(bool))
            {
                // Generate and execute ASK query.
                SparqlQueryModelVisitor <T> visitor = new SparqlQueryModelVisitor <T>(new AskQueryGenerator());
                visitor.VisitQueryModel(queryModel);

                ISparqlQuery       query  = visitor.GetQuery();
                ISparqlQueryResult result = Model.ExecuteQuery(query, _inferenceEnabled);

                return(new object[] { result.GetAnwser() }.OfType <T>().First());
            }
            else if (queryModel.ResultOperators.Any(o => o is CountResultOperator))
            {
                SparqlQueryModelVisitor <T> visitor = new SparqlQueryModelVisitor <T>(new SelectBindingsQueryGenerator());
                visitor.VisitQueryModel(queryModel);

                ISparqlQuery       query  = visitor.GetQuery();
                ISparqlQueryResult result = Model.ExecuteQuery(query, _inferenceEnabled);

                BindingSet b = result.GetBindings().FirstOrDefault();

                if (b != null && b.Any())
                {
                    return(new object[] { b.First().Value }.OfType <T>().First());
                }
                else
                {
                    return(new object[] { 0 }.OfType <T>().First());
                }
            }
            else
            {
                // Unknown scalar type.
                throw new NotImplementedException();
            }
        }