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