Fix URI.merge/2 handling of authorityless base #14358
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Yet another fix of an issue in
URI.merge/2. The problem concerns merging against a base with non-hierarchical URI schemes without authority (like "urn:"). According to the RFC 3986 merging algorithm, when dealing with base URIs that have a scheme but no authority, the path should be directly resolved. The current behavior however prepends a leading slash, which is neither standards-compliant nor useful in practice.Example:
This should be the last fix in the series of corrections to the
URI.merge/2algorithm, as this makes the last failing test related to URI merging of the W3C JSON-LD 1.1 test suite pass.Additionally, this PR reorganizes the grown
URI.merge/2tests into adescribeblock for better structure and readability.