I think your URLs are valid by RFC 3986. "When authority is not present" refers to URLs without the double-slash prefix, like the "urn:example:animal:ferret:nose". The RFC treats empty authority and no authority as different cases. If authority is present, the format for hier-part has to be
"//" authority path-abempty
Authority may be an empty string:
authority = [userinfo "@"] host [":" port]
host = IP-literal / IPv4address / reg-name
reg-name = *(unreserved / pct-encoded / sub-delims) ; May be empty
Path-abempty may begin with two slashes if the first two segments are empty strings:
path-abempty = *("/" segment)
segment = *pchar ; May be empty |