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(); } }