Пример #1
0
        /// <inheritdoc />
        public BlankNode BlankSelf(ReadOnlySpan <char> label)
        {
            if (label.IsEmpty)
            {
                return(BlankSelf());
            }

            var valueString = BlankNode.ValueStringFromLabel(label);

            var valueStringHash = string.GetHashCode(valueString);

            var qry = _nodes
                      .Where(x => x.ValueStringHash == valueStringHash)
                      .OfType <BlankNode>()
                      .Where(x => x.IsSelfScoped());

            BlankNode?found = null;

            foreach (var item in qry)
            {
                if (valueString.SequenceEqual(item.ValueString))
                {
                    found = item; break;
                }
            }

            if (found is null)
            {
                Counter(null).SkipTo(TryReadLabelIndex(BlankGraphPrefix, label));
                found = _linkNodeBuilder.NewSelfScoped(new string(valueString));
                _nodes.Add(found);
            }

            return(found);
        }
Пример #2
0
        public void Normalize()
        {
            var m = new UriOrBlankMap();

            var n1 = m.Create("x:n1");
            var n2 = m.Create(" x:n1 ");

            Assert.AreEqual(n1.ValueString, n2.ValueString, "trimmed");

            var b1 = m.NewSelfScoped(" a-label");
            var b2 = m.NewSelfScoped("a-label ");

            Assert.AreEqual(b1.ValueString, b2.ValueString, "trimmed");
        }