OK, so having digested such excellent answers as this one difference between URLs and URIs, I think I now understand the distinction between the two.
What I now don't understand is why the .NET Framework has a UriBuilder class, which - as far as I can tell - only works on URIs which are resource locators and should therefore properly be called a UrlBuilder.
Can someone give me an example of UriBuilder
being used to build a URI which is not a resource locator? Or some rationale for this decision in the design of the .NET framework?