public void BuildingAChain() { var rdf = new RdfData(new NodeFactory()); var g = rdf.GetBlankGraph().Update .Let(out var graphId); // x:joe x:phone _:auto1 // _:auto1 x:home "a" // _:auto1 x:home "123"^^int g.For(rdf.Uri("x:joe")) .With(rdf.Uri("x:phone")) .To(rdf.Blank(graphId)) .With(rdf.Uri("x:home")) .Add(rdf.New("123"), rdf.New(123)); Assert.AreEqual(3, rdf.Query.Count); //now query data. var graph = rdf.Query.From(graphId).ToList(); var linkToData = graph.LinksFor(rdf.Uri("x:joe")).Single(); Assert.AreEqual(rdf.Uri("x:phone"), linkToData.Predicate, "Got Joe's phone entries"); var properties = graph.PropertiesFor((Node <UriOrBlank>)linkToData.Object).ToList(); Assert.AreEqual(2, properties.Count, "Expected 2 entries"); var thePhoneNumber = properties.Select(x => x.Object.As <int>()) .Single(x => !(x is null)) ?? throw new Exception("Didn't find phone number"); Assert.AreEqual(123, thePhoneNumber.Value); }
public void GraphIds_Ordered() { var rdf = new RdfData(new NodeFactory()); var g1 = rdf.BlankSelf("test"); rdf.Assert(g1, rdf.Blank(g1), rdf.Uri("a:pred"), rdf.New(123)); var graphs = rdf.GraphIds; Assert.AreEqual(3, graphs.Length); Assert.AreEqual(rdf.System, graphs.ElementAt(0)); Assert.AreEqual(rdf.Default, graphs.ElementAt(1)); }