Пример #1
0
        public void HasCrossGraphBlank()
        {
            var rdf = new RdfData(new NodeFactory());

            var g1 = rdf.GetGraph(rdf.BlankSelf());
            var g2 = rdf.GetFullGraph("app:test");

            var who = rdf.Uri("app:who");
            var b1  = g1.Blank("b1");

            //b1 in g1 points to blank in g2 for details.
            g1.Assert(b1, who, g2.Id);

            //b1 has name fred.
            var name = rdf.Uri("app:name");

            g2.Assert(b1, name, rdf.New("Fred"));

            //Now find via cross graph query.
            var otherG = g1.Query.Single(x =>
                                         x.Predicate == who &&
                                         x.Object is Node <UriOrBlank>)
                         .Object.Cast <UriOrBlank>();

            var myName = rdf.GetGraph(otherG).Query.Where(x =>
                                                          x.Subject == b1 &&
                                                          x.Predicate == name)
                         .Get <string>()
                         .Single();

            Assert.AreEqual("Fred", myName);
        }
Пример #2
0
        public async Task WriteRead()
        {
            var file = new FileInfo(
                Path.Combine(Files.AppData.NqFileTests.FullName,
                             nameof(WriteRead) + ".nt"));

            var rdf = new RdfData(new NodeFactory());

            var g = rdf.GetFullGraph("graph:1")
                    .Assert(rdf.Uri("sub1:/"), rdf.Uri("pred1:/"), rdf.New("basic text"));

            file.Directory.EnsureDelete();
            var t = new NTripleFile(file);
            await t.Write(g);

            file.Refresh();
            Assert.IsTrue(file.Exists);
            Assert.IsTrue(file.Length > 0, "wrote some data");

            //copy current so it doesn't delete.
            var gCopy = g.Query.ToList();

            g.Clear();
            await t.Read(g);

            IEqualityComparer <Quad> eq = new SameQuad();

            var gDiffs = g.Query.Except(gCopy, eq).ToList();

            Assert.IsFalse(gDiffs.Any(), "No difference");
        }
Пример #3
0
        public void Parse()
        {
            var data = "<x:/s1> <x:/p1> \"Blurb\" .";

            var rdf = new RdfData(new NodeFactory());
            var g   = rdf.GetFullGraph("x:g1");

            var token = NTripleTokenizer.NextToken(data);

            var parse = new NTripleParse(rdf.GetFullGraph("x:g1"));

            while (!token.IsEnd)
            {
                parse.Next(token);
                token = NTripleTokenizer.NextToken(token.Rest);
            }

            Assert.AreEqual(1, g.Query.Count, "Loaded a triple");
        }