> Digging into method, then: more-frequently-occurring tags are presumed to be more general than less-frequently-appearing tags?
No, all tags are handled in the same way by the player. It's completely up to the user to specify the hierarchy in which tags can be browsed. The player then builds the tree dynamically.
> If the latter, it's not clear to me how the tags are directed, other than in the sense of an RDF triple's subject, predicate, and object.
I'm kind of lost here, since I'm failing to see where the confusion comes from. Also, I'm not a native English speaker, so I might be missing something or my explanations just aren't well enough. So let's try this again with some simple pseudo code. Tags here are nothing but key:value pairs associated to audio files. So if the user asks for the tree structure like key_3/key_4/key_1 the player can simply do the following:
keys = {key_3, key_4, key_1};
tree = new Tree;
for song in songs {
subtree = tree
for key in keys {
// key here might be something like "Artist"
// value here might be something like "Iron Maiden"
value = song.get_key_value(key)
if !subtree.has_node(value) {
// if the subtree doesn't already have the "Iron Maiden" node in the current level, add it
subtree.insert_node_sorted(value)
}
// use the "Iron Maiden" node as the new subtree
subtree = subtree.get_node(value)
}
subtree.insert_song_sorted(song)
}
No, all tags are handled in the same way by the player. It's completely up to the user to specify the hierarchy in which tags can be browsed. The player then builds the tree dynamically.
> If the latter, it's not clear to me how the tags are directed, other than in the sense of an RDF triple's subject, predicate, and object.
I'm kind of lost here, since I'm failing to see where the confusion comes from. Also, I'm not a native English speaker, so I might be missing something or my explanations just aren't well enough. So let's try this again with some simple pseudo code. Tags here are nothing but key:value pairs associated to audio files. So if the user asks for the tree structure like key_3/key_4/key_1 the player can simply do the following: