private static IGraph GetGraph(this ITripleStore store, Uri metaGraphUri, Uri graphBaseUri)
        {
            IGraph graph = store.Graphs.FirstOrDefault(item => item.BaseUri.AbsoluteUri == graphBaseUri.AbsoluteUri);

            if (graph == null)
            {
                graph = store.AddGraph(graphBaseUri);
                IGraph metaGraph = store.Graphs.FirstOrDefault(item => item.BaseUri.AbsoluteUri == metaGraphUri.AbsoluteUri);
                if (metaGraph == null)
                {
                    metaGraph = store.AddGraph(metaGraphUri);
                }

                metaGraph.Assert(graph.CreateUriNode(graphBaseUri), graph.CreateUriNode(Foaf.primaryTopic), graph.CreateUriNode(graphBaseUri));
            }

            return(graph);
        }
        private static void ExpandGraphs(this ITripleStore store, TripleStore targetStore, Uri metaGraphUri)
        {
            IGraph metaGraph = store.AddGraph(metaGraphUri);

            foreach (Triple triple in targetStore.Triples)
            {
                IUriNode subject = (triple.Subject is IBlankNode ? targetStore.FindOwningSubject((IBlankNode)triple.Subject) : (IUriNode)triple.Subject);
                if (subject != null)
                {
                    IGraph graph = store.GetGraph(metaGraphUri, subject.Uri);
                    graph.Assert(graph.Import(triple));
                }
            }
        }