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