/// <summary>
        /// Gets the template graph used to specify the configuration of a Sesame repository.
        /// </summary>
        /// <returns>Template Graph.</returns>
        public override IGraph GetTemplateGraph()
        {
            IGraph g    = GetBaseTemplateGraph();
            INode  impl = g.CreateBlankNode();

            g.Assert(ContextNode, g.CreateUriNode("rep:repositoryImpl"), impl);
            g.Assert(impl, g.CreateUriNode("rep:repositoryType"), g.CreateLiteralNode("openrdf:SailRepository"));
            INode sailImpl = g.CreateBlankNode();

            g.Assert(impl, g.CreateUriNode("sr:sailImpl"), sailImpl);

            if (DirectTypeHierarchyInferencing)
            {
                INode sailDelegate = g.CreateBlankNode();
                g.Assert(sailImpl, g.CreateUriNode("sail:sailType"), g.CreateLiteralNode("openrdf:DirectTypeHierarchyInferencer"));
                g.Assert(sailImpl, g.CreateUriNode("sail:delegate"), sailDelegate);
                sailImpl = sailDelegate;
            }
            if (RdfSchemaInferencing)
            {
                INode sailDelegate = g.CreateBlankNode();
                g.Assert(sailImpl, g.CreateUriNode("sail:sailType"), g.CreateLiteralNode("openrdf:ForwardChainingRDFSInferencer"));
                g.Assert(sailImpl, g.CreateUriNode("sail:delegate"), sailDelegate);
                sailImpl = sailDelegate;
            }

            g.Assert(sailImpl, g.CreateUriNode("sail:sailType"), g.CreateLiteralNode("openrdf:NativeStore"));
            String mode = IndexMode.ToString().ToLower();

            if (mode.Contains("."))
            {
                mode = mode.Substring(mode.LastIndexOf('.') + 1);
            }
            g.Assert(sailImpl, g.CreateUriNode("ns:tripleIndexes"), g.CreateLiteralNode(mode));
            return(g);
        }