I'm unsure of what the current standard is at this point in time, or exactly what version PM+ mostly complies with as the standards evolve, but I've always had a problem with different data elements sharing the exact same name. In this case, we have two different fields which are named "Sublocation" with one in the LocationTaken namespace and the other in the LocationShown namespace. I think you've addressed this in your variable names: SublocationTaken and SublocationShown... Just checked, and I was wrong. This is what PM+ currently has:
location, loc IPTC Sublocation field
locationtaken, lctk IPTC sublocation taken field
Personally, I'd prefer something shorter and more intuitive, which I think IPTC should have done in the first place:
Use
SubLocationShown and
SubLocationTaken (the way you do with citytaken, etc.)
and retain Location (and it's associated fields such as sublocation, city, state, etc. for backwards compatibility but somehow discourage it's continued use) and have them automatically map to LocationShown and its new fields (cityshown, etc.).
which is what I believe Location was originally intended to be and was ambiguous from the beginning which is why LocationTaken and LocationShown were added.
Thoughts? What does your Metadata Man Dennis think? :-)