The system identifier is a URI, by definition, but the public identifier is simply a string.
The system identifier of an external entity has been a local, or system-specific identifier while the public identifier has been a more global, persistent name.