Пример #1
0
        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);
        }
Пример #2
0
        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));
        }