コード例 #1
0
        public void Blank_NewAutoNoCollide()
        {
            var f = new NodeFactory();
            var g = f.BlankSelf();

            var n1 = f.Blank(g, "auto#1");

            var n2 = f.Blank(g);

            Assert.IsFalse(n1 == n2, "Auto blank not same if label matches");
        }
コード例 #2
0
        public void Blank_ReuseAuto()
        {
            var f = new NodeFactory();

            var g = f.BlankSelf();

            var n1 = f.Blank(g);
            var n2 = f.Blank(g, n1.Value.Label);

            Assert.AreEqual(n1, n2, "matching auto matches node");
        }
コード例 #3
0
        public void BlankNodes()
        {
            var f       = new NodeFactory();
            var g       = f.BlankSelf();
            var labeled = f.Blank(g, "anon");

            Assert.IsTrue(labeled.GetValueString().EndsWith("anon"), "Expect blank with label.");

            var auto = f.Blank(g);

            Assert.IsTrue(auto.GetValueString().Contains(NodeFactory.BlankNodePrefix),
                          "Has standard prefix.");

            Assert.IsTrue(f.Blank(g, "_:xxA").GetValueString().EndsWith("xxA"), "Blank node with label");

            Assert.IsTrue(f.Blank(g, $"{NodeFactory.BlankNodePrefix}ABc")
                          .GetValueString().EndsWith("ABc"), "blank node with full prefix");
        }
コード例 #4
0
        public void SubjectCanBeUriOrBlank()
        {
            var f  = new NodeFactory();
            var g  = f.BlankSelf();
            var s1 = f.Blank(g, "_:node1");

            Assert.AreEqual("node1", s1.Value.Label);

            var s2 = f.Blank(g);

            Assert.IsNotNull(s2.Value.Label, "generates new label");

            var s3 = f.Uri("x:/someone#here");

            Assert.IsNull(s3.Value.Label);
            Assert.IsNull(s3.Value.Scope);

            Assert.ThrowsException <InvalidUri>(() => f.Uri("23:/path"));
        }
コード例 #5
0
        public void BlankNode_ScopeToGraph()
        {
            var f = new NodeFactory();

            //blanks in a scope can be found via same label.
            // but different scope, with same label in not the same blank.

            var g1 = f.BlankSelf();
            var g2 = f.BlankSelf();

            var b1 = f.Blank(g1, "A");
            var b2 = f.Blank(g2, "A");

            Assert.IsFalse(b1 == b2);

            //same scope and label will match.
            var b3 = f.Blank(g1, "A");

            Assert.AreEqual(b1, b3);
        }
コード例 #6
0
        public void UsingBlankOrUri()
        {
            var f = new NodeFactory();

            //a uri
            var uri = f.Uri("a:uri");

            //a blank
            var blank = f.Blank(uri, "label");

            //blank is scoped to uri
            Assert.AreEqual(uri, blank.Scope);

            //cannot create a uri node as object.
            var uri2 = new Uri("https://duckduckgo.com/");

            Assert.ThrowsException <UriObjectNodeNotSupported>(() => f.New(uri2));
        }
コード例 #7
0
        public void AddWithUpDownAndLet()
        {
            var f   = new NodeFactory();
            var rdf = new RdfData(f);

            var gId = f.BlankSelf("g1");
            var g   = rdf.GetGraph(gId).Update;

            // _:1 x:p1 "1".
            g.ForBlank("1", out _)
            .With(f.Uri("x:p1"))
            .Add(f.New("1"))
            // _:1 x:p2 "123"
            .Then().With(f.Uri("x:p2")).Add(f.New("123"))
            // _:1 x:p3 _:2
            // _:2 x:p3 "fred"
            .Then().With(f.Uri("x:p3")).To(f.Blank(gId))
            .With(f.Uri("x:p3")).Add(f.New("fred"))
            //get ref to _:2
            .Then().Let(out _);
        }