public void GeneralUsage() { var rdf = RdfDataFactory.CreateNoLock(); //Self scoped blank node. var graph = rdf.BlankSelf("self-blank"); //Blank node scoped to graph var subject = rdf.Blank(graph); //uri predicate, from Dublin core var predicate = rdf.Uri(Terms.Title); var @object = rdf.New("a title from my stuff"); //add quad to rdf data rdf.Assert(graph, subject, predicate, @object); //query var quad = rdf.Query.Single(); //remove rdf.Retract(quad); Assert.AreEqual(0, rdf.Query.Count); //replace. rdf.Replace(new[] { new Quad(graph, rdf.Blank(graph), rdf.Uri("a:pred"), rdf.New(123)) }, new[] { quad }); }
private void AddBasicProfile() { var rdf = RdfDataFactory.CreateNoLock(); if (!_data.Exists()) { throw new Exception("Call start first"); } var g = rdf.GetFullGraph("app:/profile#me"); var file = new NTripleFile(_data); file.Read(g).Wait(); g.Update.For(g.Uri(_myProfile)) .With(RDFS.Label, out _).Add("My Name") .Then() .With(Terms.DateModified, out _).Add(DateTime.UtcNow) .Then() .With(Terms.Description, out _).Add("My basic profile data") .Then() .With(Terms.AlternativeTitle, out _).Add("ME"); file.Write(g).Wait(); }
private void AddFavorites() { var rdf = RdfDataFactory.CreateNoLock(); var g = rdf.GetFullGraph(_myProfile); var file = new NTripleFile(_data); file.Read(g).Wait(); //some favorites. g.Update .ForBlank("favs", out var favs) .With(RDF.A, out _).Add(RDFS.List, out _) .Then() .List(g.Uri("https://duckduckgo.com/"), g.Uri("https://inrupt.com/"), g.Uri("https://github.com/"), g.Uri("https://portal.azure.com/")) .Then() .For(g.Uri(_myProfile)) .With(g.Uri("app:favorites")).Add(favs) //and I want to update the last modified. .Then() .With(Terms.DateModified, out _) .Set(DateTime.UtcNow); file.Write(g).Wait(); }
public void AddDataToGraph() { //Assert some data for a graph. var rdf = RdfDataFactory.CreateNoLock(); //My base graph. var baseGraph = rdf.GetFullGraph("app:base"); //The inbuilt system graph var sys = rdf.GetSystem(); //Assert some data. sys.Assert(baseGraph.Id, sys.Uri(RDF.A), sys.Uri("app:graphId")); }
public void QueryWithConverters() { var rdf = RdfDataFactory.CreateNoLock(); var g = LoadSampleData(rdf, rdf.BlankSelf()); //Read all linkTo URI's. var linkedUris = rdf.Query .From(g) .For(rdf, "x:me") .With(rdf, "a:linkTo") .GetUri() .ToList(); Assert.IsTrue(linkedUris.Any(), "found some links"); }
private void NewBlankProfile() { var rdf = RdfDataFactory.CreateNoLock(); _data.EnsureDelete(); var g = rdf.GetFullGraph(_myProfile); g.Update .For(g.Uri(_myProfile)) .With(g.Uri(RDF.A)) .Add(g.Uri("app:/profile")); new NTripleFile(_data).Write(g).Wait(); }
public void LoadAFile() { //Load a sample N-triple file var rdf = RdfDataFactory.CreateNoLock(); var file = SampleFile(); var g = rdf.GetBlankGraph(); //Read file data into the graph g new NTripleFile(file).Read(g).Wait(); var tripleCount = g.Query.Count; Assert.IsTrue(tripleCount > 0, "Loaded some data"); }
public void ConverterWithNormalization() { var rdf = RdfDataFactory.CreateNoLock(); rdf.Update .FromBlank(out var g1) .For("x:me ", out _) .With("a:Name", out _) .Add("Fred"); var aboutMe = rdf.Query.From(g1) .For(rdf, "x:me") .ToList(); Assert.AreEqual(1, aboutMe.Count, "Found entry"); }
public void WriteAFile() { //Write a sample N-triple file var file = Files.AppDataDir.GetFile( nameof(UsingNTripleFile), nameof(WriteAFile) + ".nt"); file.EnsureDelete(); var rdf = RdfDataFactory.CreateNoLock(); var g = rdf.GetBlankGraph(); g.Assert(g.Uri("test:sub"), g.Uri("test:pred"), g.New("a name")); new NTripleFile(file).Write(g).Wait(); Assert.IsTrue(file.Exists() && file.Length > 0, "File created with some data"); }
public void CreateRdfStore() { //create default thread-locked version. IRdfData rdf = RdfDataFactory.CreateDefault(); Assert.IsTrue(rdf is RdfDataThreadLock); //create basic version. rdf = RdfDataFactory.CreateNoLock(); Assert.IsTrue(rdf is RdfData); //setup app singleton RdfDataFactory.Init(RdfDataFactory.CreateNoLock()); //use singleton rdf = RdfDataFactory.AppData; Assert.IsNotNull(rdf); }
public void CreateFromRdfData() { //Create new Full graph var rdf = RdfDataFactory.CreateNoLock(); //Full graph with new labeled blank node var myGraph = rdf.GetBlankGraph("test"); //A new graph; after I got my first graph. var subject = rdf.Uri("test:sub"); rdf.Assert(rdf.Uri("test:g1"), subject, rdf.Uri("test:int"), rdf.New(123)); var quadFromOther = myGraph.Query .FirstOrNull(x => x.Subject == subject); Assert.IsNull(quadFromOther); }
public void ReadDefaultValue() { var rdf = RdfDataFactory.CreateNoLock(); LoadSettings(rdf); //schema var level = rdf.Uri("app:Log#Level"); //create full graph with baseSettings as main. var g = rdf.GetBlankGraph("baseSettings"); //log level for Microsoft; using base / default. g.Query .For(rdf, "app:Logger#Microsoft").ToArray() .Value <string>(level, out var logLevel) .For(); Assert.AreEqual("Warning", logLevel, "Default is warning level"); }
public void FluentWithNodeCreator() { //Fluent builder with node creation var rdf = RdfDataFactory.CreateNoLock(); rdf.Update .From("g:aGraph", out var aGraph) .For("x:me", out var me) .With("a:name", out var name) .Add("Fred", out var myName) .Then() //ignore created node .With("a:age", out _) .Add(123, out _); Assert.AreEqual("g:aGraph", aGraph.Uri); Assert.AreEqual("x:me", me.Uri); Assert.AreEqual("a:name", name.Value); Assert.AreEqual("Fred", myName.Value); }
public void ConvertToSelfGraph() { //Convert from mixed to self only graph. var rdf = RdfDataFactory.CreateNoLock(); //Mixed graph has main and some other graphs. var myGraph = rdf.GetGraph( rdf.BlankSelf("MainGraph"), rdf.BlankSelf("Other1"), rdf.BlankSelf("Other2")); //Self only graph. myGraph = myGraph.SelfOnly(); Assert.IsFalse(myGraph.Other.Any()); //Or directly get self-only from rdf. myGraph = rdf.GetSelfGraph(rdf.BlankSelf("MainGraph")); Assert.IsFalse(myGraph.Other.Any()); }
public void UseHelpersWithBuilders() { var rdf = RdfDataFactory.CreateNoLock(); //Use let to collect generated node(s) rdf.Update .From("g:aGraph", out var aGraph) .For("x:me", out var me) .With("a:name", out _).Let(out var name) .Add("Fred") .Then().Then().Then() .From(aGraph) .For(me).With(name) .Add("Fredo", "fr", out var frName); Assert.IsNotNull(aGraph); Assert.IsNotNull(me); Assert.IsNotNull(name); Assert.IsNotNull(frName); }
public void ReadActualValue() { var rdf = RdfDataFactory.CreateNoLock(); LoadSettings(rdf); //schema var level = rdf.Uri("app:Log#Level"); //create full graph with debugSettings as main. var g = rdf.GetBlankGraph("debugSettings"); //log level for Microsoft; using base / default. g.Query .For(rdf, "app:Logger#Microsoft") .ToArray() .Value <string>(level, out var logLevel); Assert.AreEqual("Information", logLevel, "Using debug setting"); }
private void GetBasicProfile() { var rdf = RdfDataFactory.CreateNoLock(); new NTripleFile(_data).Read(rdf.GetFullGraph(_myProfile)).Wait(); var profile = rdf.Query.For(rdf.Uri(_myProfile)); profile .Value <DateTime>(rdf.Uri(Terms.DateModified), out var lastModified) .Value <string>(rdf.Uri(RDFS.Label), out var name) //The possible null alternate name .ValueOptional <string>(rdf.Uri(Terms.AlternativeTitle), out var altName); var bestName = altName is null ? name : altName.Value; var welcome = $"Hello {bestName}, " + $"your profile was last updated {lastModified.ToShortDateString()}"; Assert.IsTrue(welcome.Contains("ME"), "Has my alt name"); }
public void ReadFromStart() { //Graph data ordered. var rdf = RdfDataFactory.CreateNoLock(); var g1 = rdf.GetBlankGraph("g1"); var g2 = rdf.GetBlankGraph("g2"); var s = rdf.Uri("app:test"); var p = rdf.Uri("app:count"); var name = rdf.Uri(RDFS.Label); g1.Assert(s, p, g1.New(1)) .Assert(s, name, g1.New("OriginalName"), out var qName); g2.Assert(s, p, g2.New(2)); //Get Full data g2 = rdf.GetFullGraph(g2.Id); var theCount = g2.Query .For(s).With(p) .Get <int>().First(); Assert.AreEqual(2, theCount); //isolated updates. //changing dependent graph g1: g1.Retract(qName); g1.Assert(s, name, g1.New("Updated")); //pre-existing g2 uses original g1 data. var theName = g2.Query .For(s).With(name).Get <string>().First(); Assert.AreEqual("OriginalName", theName); }
private void GetMyFavorites() { var rdf = RdfDataFactory.CreateNoLock(); var g = rdf.GetFullGraph(_myProfile); new NTripleFile(_data) .Read(g) .Wait(); //the list of favs. var favsList = g.Query .For(g.Id) .With(g.Uri("app:favorites")) .GetBlanks() .First(); //get list items. var myFavorites = new RdfsList(rdf, g) .GetList(favsList).ToArray(); Assert.IsTrue(myFavorites.Length > 0, "Got some favorites"); }