I would not have the URL property, particularly as it duplicates the information in other properties making it a bit confusing.

If we were keeping separate properties for the parts of the URL, I'd have constructors which took a datastore and a URL, breaking up the URL at construction time and returning `nil` if there was a problem (along with logging). Perhaps I'd use an `error` parameter, I'm not sure.