/// <summary>
        /// Executes a SparqlQuery on the store.
        /// </summary>
        /// <param name="query"></param>
        /// <param name="transaction"></param>
        /// <returns></returns>
        public override ISparqlQueryResult ExecuteQuery(ISparqlQuery query, ITransaction transaction = null)
        {
            if (query.IsInferenceEnabled && _reasoner != null)
            {
                _store.AddInferenceEngine(_reasoner);
            }
            else
            {
                _store.ClearInferenceEngines();
            }

            string q = query.ToString();

            object results = ExecuteQuery(q);

            if (results is IGraph)
            {
                return(new dotNetRDFQueryResult(this, query, results as IGraph));
            }
            else if (results is SparqlResultSet)
            {
                return(new dotNetRDFQueryResult(this, query, results as SparqlResultSet));
            }

            return(null);
        }