And, as a programmer myself, who has just spent two years writing a keyword management app for Mac, I can reassure you that it takes some getting your head around metadata standards and compatibility.
In brief, it’s a mess but, after extensive research and testing, I can assure you that this is neither over-specified nor unnecessary, especially from a point of view of compatibility with other software, which can behave equally badly.
If we take the case of non-hierarchical keywords, it is simply a matter of adding each required keyword to the xmp-dc:subject
tag.
But, with hierarchical keywords, we also need to populate the xmp-lr:hierarchicalSubject
tag. In order to do this, we need to write each hierarchical keyword there as well as to the xmp-dc:subject
tag. But it is not just a matter of including all keywords in a hierarchy once in an all-encompassing “phrase”.
In your example, you want to use both ungulate
and giraffe
, but in so doing, you are referring to two different hierarchical keywords:
animal|mammal|ungulate
animal|mammal|ungulate|giraffe
These hierarchical keywords are integral and indivisible entities - they are not lists of keywords and one cannot be “derived” from the other.
Thus the requirement for both to be included in the xmp-lr:hierarchicalSubject
tag.
PL5 effectively does this but it is hidden behind a tooltip that (eventually) appears when you hover over one of the tokens. If duplication is deemed necessary, then, like you, I would rather see the Lr/Bridge style of explicit definition of each hierarchy.