code: def transform(self, ref, strict=False):
          
          scheme, authority, path, query, fragment = self.RE.match(ref).groups()
  
          # RFC 3986 5.2.2. Transform References
          if scheme is not None and (strict or scheme != self.scheme):
              path = self.__remove_dot_segments(path)
          elif authority is not None:
              scheme = self.scheme
              path = self.__remove_dot_segments(path)
          elif not path:
              scheme = self.scheme
              authority = self.authority
              path = self.path
              query = self.query if query is None else query
          elif path.startswith(self.SLASH):
              scheme = self.scheme
              authority = self.authority
              path = self.__remove_dot_segments(path)
          else:
              scheme = self.scheme
              authority = self.authority
              path = self.__remove_dot_segments(self.__merge(path))
          return type(self)(scheme, authority, path, query, fragment)
docs: Transform a URI reference relative to `self` into a
          :class:`SplitResult` representing its target URI.