<br><br><div><span class="gmail_quote">On 11/12/2007, <b class="gmail_sendername">Marko Anastasov</b> &lt;<a href="mailto:marko.anastasov@gmail.com">marko.anastasov@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Dec 10, 2007 8:42 AM, Mikkel Kamstrup Erlandsen<br>&lt;<a href="mailto:mikkel.kamstrup@gmail.com">mikkel.kamstrup@gmail.com</a>&gt; wrote:<br>&gt; As it stands tags/keywords are just a multi valued string fields. The intend
<br>&gt; of this post is discuss converting tags to first class objects. The idea is<br>&gt; that we have a Tag content type subclassing Annotation, to assign a tag to<br>&gt; an item we have three options:<br><br>It seems that I don&#39;t quite understand the specification [1]. I thought that
<br>tags are already defined as a content type, a subclass of Annotation.<br>Could you explain?</blockquote><div><br>Yeah, I can see the confusion :-) We also have a field xesam:userKeyword[1] which is also described as a tag. I think the current state is ambiguous. It would be a bit odd if apps both had to use Tag objects and userKeyword fields to handle tags.
<br></div><br>[1]: <a href="http://xesam.org/main/XesamOntology90#xesam:userKeyword">http://xesam.org/main/XesamOntology90#xesam:userKeyword</a><br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;<br>&gt;&nbsp;&nbsp;1) Let the tag point at all tagged items, by having a field with a list of<br>&gt; item urls. This is bad for deletions. If you delete a file we have to check<br>&gt; and update all tags accordingly which can very expensive.
<br>&gt;<br>&gt;&nbsp;&nbsp;2) Let the items point at the tags that they have assigned by having a<br>&gt; field with a list of tag urls.<br><br>This already works (in the web development world) and would be best I think,<br>while the rest would be complications without substantial benefits.
<br><br>&gt; Deletions is no problem here (deletions of<br>&gt; tags are of course expensive, but is an uncommon operation). The tricky<br>&gt; thing here is to get the display titles for the tags since you only have the<br>
&gt; urls of the assigned tags available. Solutions to this problem could be<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;2.1) Accept that apps must query for the xesam:title field of each of the<br>&gt; found tags and manually do the tag-&gt;tag_name mapping for each item
<br><br>Again, this is perfectly fine IMO. In any case, as soon as something becomes<br>an object, you need to query for some property.</blockquote><div><br>Good. Agreed. <br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
[snip]<br>&gt; Some use cases that we want to keep in mind (in random order):<br>&gt;<br>&gt;&nbsp;&nbsp;U1) Show all files with a given tag<br>&gt;&nbsp;&nbsp;U2) Show all files without a tag<br>&gt;&nbsp;&nbsp;U3) List all files (matching a query) with the tag names next to each file
<br>&gt;&nbsp;&nbsp;U4) Deletions/modifications/renaming of tags and files should be light<br>&gt; (mostly del/mod of files)<br>&gt;&nbsp;&nbsp;U5) It should be possible to have a tag without any files associated (not<br>&gt; possible with the current tag-as-a-field model)
<br><br>I disagree about tags that do not apply to any files. I think that as soon<br>as a tag&#39;s assign count becomes zero, it should be removed from the<br>metadata store. The user does not see it any more, and probably does
<br>not need it, and should re-enter it again if necessary. It would seem like<br>metadata junk that grows without user&#39;s knowledge - when would you<br>say that a store should delete them?</blockquote><div><br>Hmm, I don&#39;t think that should up to the metadata store to decide (when tags should be pruned).
<br><br>Pruning empty tags also makes it impossible to map some metadata systems like GMail, which perfectly fine handles empty tags.<br></div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt;<br>&gt; I think I would go for solution 2.1. This solves all use cases but U2 (maybe<br>&gt; it does solve U2, but I just haven&#39;t figured out how).<br><br>I&#39;m not totally sure what you mean whose task this should be (server&#39;s?),
<br>but anyway U2 is easily solvable by a little bit of application logic (get all<br>files by content type, sort by tags)</blockquote><div><br>Yes, you are right. Apps can easily work around this. <br></div><br>Cheers,<br>
Mikkel<br></div>