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