According to the ExifTool site today, there are 25764 tags, with 16462 unique tag names.
Mainly in the context of reconciliation and not something that needs to be or should be propagated.
OK, are you ready for a fight over this?
There is a difference between what is true in a dictionary of keywords and hierarchies and what needs to be written to the metadata of a file.
To be (hopefully) clear, if a keyword is not used in a particular context within a given file, there is absolutely no requirement for any “possible” hierarchies to be inferred. If that were the case, every keyword must be considered as potentially hierarchical and that is not the intent of the lr:hierarchicalSubject
tag.
It is the job of the dc:subject
tag to include all keywords mentioned in lr:hierarchicalSubject
but there is no obligation for the inverse case, otherwise one could argue that using dc:subject
is redundant.
If I may repeat, and clarify, something I said a while ago…
- The
dc:subject
tag is for searching
- The
lr:hierarchicalSubject
tag is for transmission of hierarchical context where such a context exists for the file in question
If a user has more than one image library, but only one keyword dictionary, and a certain keyword only ever exists in a hierarchical context for one of those libraries, it would not make sense to include irrelevant context in another library that has no requirement for that context.
To go back to my (in)famous example…
Orange
Fruit
Colour
Enterprise
Telecommunications
Satsuma
… are all valid standalone keywords.
But we can also construct them into a couple of simple hierarchies…
Fruit > Orange > Satsuma
Colour > Orange
Enterprise > Telecommunications > Orange
Now I want to search for all orange fruits.
In saying that, do I mean all fruits that are orange in colour, or all varieties of the fruit know as an Orange, or all fruits that are not just varieties of Orange but are orange in colour?
Asking such a question reveals that constructing a search predicate based on these hierarchical contexts involves a lot more effort than constructing such a predicate based on purely the keywords we want to locate and, for searching purposes, hierarchy becomes irrelevant and only the dc:subject
tag is required.
Let’s say we want to keyword an image of an Apricot…
<dc:subject>
<rdf:Bag>
<rdf:li>Apricot</rdf:li>
<rdf:li>Colour</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Orange</rdf:li>
</rdf:Bag>
</dc:subject>
…
<lr:hierarchicalSubject>
<rdf:Bag>
<rdf:li>Colour</rdf:li>
<rdf:li>Colour|Orange</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Fruit|Apricot</rdf:li>
</rdf:Bag>
</lr:hierarchicalSubject>
… and an image of a Satsuma would look like…
<dc:subject>
<rdf:Bag>
<rdf:li>Colour</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Orange</rdf:li>
<rdf:li>Satsuma</rdf:li>
</rdf:Bag>
</dc:subject>
…
<lr:hierarchicalSubject>
<rdf:Bag>
<rdf:li>Colour</rdf:li>
<rdf:li>Colour|Orange</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Fruit|Orange</rdf:li>
<rdf:li>Fruit|Orange|Satsuma</rdf:li>
</rdf:Bag>
</lr:hierarchicalSubject>
… but an image of a Blood Orange would look like…
<dc:subject>
<rdf:Bag>
<rdf:li>Blood Orange</rdf:li>
<rdf:li>Colour</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Orange</rdf:li>
<rdf:li>Red</rdf:li>
</rdf:Bag>
</dc:subject>
…
<lr:hierarchicalSubject>
<rdf:Bag>
<rdf:li>Colour</rdf:li>
<rdf:li>Colour|Red</rdf:li>
<rdf:li>Fruit</rdf:li>
<rdf:li>Fruit|Orange</rdf:li>
<rdf:li>Fruit|Orange|Blood Orange</rdf:li>
</rdf:Bag>
</lr:hierarchicalSubject>
Constructing a predicate to look for images of fruits that are both Oranges in type and colour, based on lr:hierarchicalSubject
becomes really difficult.
If we specify
`Colour|Orange` AND `Fruit|Orange`
… then we preclude both Blood Orange
and Apricot
If we specify
`Colour|Orange` OR `Fruit|Orange`
… then we include everything that is orange in colour, even if they are not fruits
But if we base the predicate on dc:subject
all we need is…
`Colour` AND `Fruit` AND `Orange`
… then we get exactly what we expected.
Imagine the problems you are going to face if you were asked to write a magazine article on the colour Orange and its relevance to the influence of the word in any context, hierarchical or not, how are you going to create a predicate for images that might contain only any of…
Fruit > Orange > Satsuma
Colour > Orange
Enterprise > Telecommunications > Orange
etc, etc
???
If you create a predicate based on dc:subject
all you need is the one word.