- |
  ## Link resolution

  The schema may designate one or more fields as link fields reference other
  objects.  Processing must resolve links to either absolute URIs using the
  following rules:

  * If a reference URI is prefixed with `#` it is a relative
  fragment identifier.  It is resolved relative to the base URI by setting
  or replacing the fragment portion of the base URI.

  * If a reference URI does not contain a scheme and is not prefixed with `#`
  it is a path relative reference.  If the reference URI contains `#` in any
  position other than the first character, the reference URI must be divided
  into a path portion and a fragment portion split on the first instance of
  `#`.  The path portion is resolved relative to the base URI by the following
  rule: if the path portion of the base URI ends in a slash `/`, append the
  path portion of the reference URI to the path portion of the base URI.  If
  the path portion of the base URI does not end in a slash, replace the final
  path segment with the path portion of the reference URI.  Replace the
  fragment portion of the base URI with the fragment portion of the reference
  URI.

  * If a reference URI begins with a namespace prefix declared in `$namespaces`
  followed by a colon `:`, the prefix and colon must be replaced by the
  namespace declared in `$namespaces`.

  * If a reference URI is an absolute URI consisting of a scheme and path,
  no processing occurs.

  Link resolution must not affect the base URI used to resolve identifiers
  and other links.

  ### Link resolution example

  Given the following schema:

  ```
- $include: link_res_schema.yml
- |
  ```

  Process the following example:

  ```
- $include: link_res_src.yml
- |
  ```

  This becomes:

  ```
- $include: link_res_proc.yml
- |
  ```
