2007/2/20, Jos van den Oever &lt;<a href="mailto:jvdoever@gmail.com">jvdoever@gmail.com</a>&gt;:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
2007/2/19, Mikkel Kamstrup Erlandsen &lt;<a href="mailto:mikkel.kamstrup@gmail.com">mikkel.kamstrup@gmail.com</a>&gt;:<br>&gt; Let&#39;s get the ball rolling on the metadata spec. This first period will just<br>&gt; be *brainstorming*, so let&#39;s try and avoid the nitty gritty details for now.
<br>&gt;<br>&gt;&nbsp;&nbsp;** What we need:<br>&gt;<br>&gt;&nbsp;&nbsp; Fields)&nbsp;&nbsp;Metadata field names and descriptions for *desktop* objects<br>&gt;<br>&gt;&nbsp;&nbsp; Types) A type grouping of metadata fields to be used in user search<br>&gt; language. Example types could be &quot;Email&quot;, &quot;Image&quot;, &quot;Audio&quot;, etc.
<br>&gt;<br>&gt;&nbsp;&nbsp; API) A dbus api to get/set metadata<br>&gt;<br>&gt;&nbsp;&nbsp; ?Tag/Emblem) Tagging/Keywords/Emblems<br>&gt;<br>&gt;&nbsp;&nbsp;** Starting points/References:<br>&gt;&nbsp;&nbsp;- Adobe XMP:<br>&gt; <a href="http://partners.adobe.com/public/developer/en/xmp/sdk/XMPspecification.pdf">
http://partners.adobe.com/public/developer/en/xmp/sdk/XMPspecification.pdf</a><br>&gt;<br>&gt;&nbsp;&nbsp;- Shared Metadata Spec:<br>&gt; <a href="http://freedesktop.org/wiki/Standards_2fshared_2dfilemetadata_2dspec">http://freedesktop.org/wiki/Standards_2fshared_2dfilemetadata_2dspec
</a><br>&gt;&nbsp;&nbsp;- Tracker metadata api:<br>&gt; <a href="http://svn.gnome.org/viewcvs/tracker/trunk/data/tracker-introspect.xml?view=markup">http://svn.gnome.org/viewcvs/tracker/trunk/data/tracker-introspect.xml?view=markup
</a><br>&gt;<br>&gt;&nbsp;&nbsp;- Spotlight Metadata Spec:<br>&gt; <a href="http://developer.apple.com/documentation/Carbon/Reference/MetadataAttributesRef/Reference/CommonAttrs.html">http://developer.apple.com/documentation/Carbon/Reference/MetadataAttributesRef/Reference/CommonAttrs.html
</a><br>&gt;<br>&gt;&nbsp;&nbsp;- Shared Emblem Spec:<br>&gt; <a href="http://freedesktop.org/wiki/Standards_2fdesktop_2demblem_2dspec">http://freedesktop.org/wiki/Standards_2fdesktop_2demblem_2dspec</a><br>&gt;&nbsp;&nbsp;- Others ideas? Nepomuk-specs? Beagle-specs?
<br>&gt;<br>&gt;&nbsp;&nbsp;** My thoughts:<br>&gt; Regarding Fields): To prevent death-by-1000-page-spec I suggest we keep the<br>&gt; field names to a core set of commonly used attributes. Ie not like Apples<br>&gt; spotlight spec (see above) which defines every known property in the
<br>&gt; universe. When things move on, teams with expert knowledge can refine<br>&gt; extensions to this spec. Fx a Wasabi Photography Metadata spec could be<br>&gt; hashed out by people in the know (which could just be EXIF, but I&#39;m not the
<br>&gt; photography expert).<br>&gt;<br>&gt; Regarding Types): There are some suggestions in the top of the Tracker api<br>&gt; link above. Regarding these I think we should leave the VFS* types out, and<br>&gt; only use single-word type names (Ie no spaces).
<br>&gt;<br>&gt; On the API): Obviously we getters and setters. They probably need to operate<br>&gt; on uris. There probably needs to be some search functionality in here too<br>&gt; since we probably shouldn&#39;t assume that the indexer and metadata server are
<br>&gt; the same.<br>&gt;<br>&gt; Tagging/Emblems: If you ask me they should be &quot;just another type of<br>&gt; metadata&quot;. When the metadata spec matures a bit we can evaluate if it needs<br>&gt; it&#39;s own api to make things easier (and allow for dedicated tagging
<br>&gt; services).<br><br>Hi All,<br><br>First I&#39;d like to point to the original mail I sent on this subject.<br>It already contained a relatively simple spec framework. That is, not<br>attribute names, but a way to define them, type them and check them.
<br>There was also some code attached to do allow testsets to check the<br>correctness of metadata extraction from files. Hence the title of the<br>mail: &#39;mimetype standardization by testsets&#39;. I still stand by this
<br>idea.</blockquote><div><br>Sorry Jos, how could I miss this out. For reference - here&#39;s the original thread:<br><a href="http://lists.freedesktop.org/archives/xdg/2006-October/008682.html">http://lists.freedesktop.org/archives/xdg/2006-October/008682.html
</a><br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Here is an idea for a simple proposal.<br><br>- Each metadata type is identified by a URI. 
E.g.<br><a href="http://www.freedesktop.org/metadata/xhtml1/title">http://www.freedesktop.org/metadata/xhtml1/title</a>.<br>- For each URI there will be human readable descriptions in every<br>language and keywords in every language. I will use the keyword in the
<br>further description mixed with the URI.</blockquote><div><br>I like this idea as such. I can&#39;t readily see how it intermixes with known widespread standards such as DC though..?<br>&nbsp;</div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
- It also has a simple type: integer, string, float, binary. Or the<br>more elaborate list of the tracker spec or the xml schema simple<br>types. Personally, I prefer the xml schema spec [1]. We&#39;d need to<br>support only a subset.
<br>- Each type has a maximal cardinality. This means how often a field<br>may occur per file/object. For example the metadata &#39;size&#39; should<br>occur only once, but the metadata &#39;tag&#39; may occur multiple times.
<br>- Each may have one parent type. Cardinality and type of the parent is<br>inherited, but may be restricted. Having multiple parents is a bad<br>idea I think.<br>- Each type is embedded, not embedded, or unspecified.<br>
- Each type is derived or not derived. E.g. &#39;size&#39; is derived, but<br>&#39;title&#39; is not. This means that &#39;title&#39; is potentially writeable.<br><br>Whether a metadata field is writeable depends on the implementation.
<br>Using &#39;embedded&#39; and &#39;derived&#39; instead of &#39;writeable&#39; is clearer,<br>because &#39;writeable&#39; depends on a number of factors: can the software<br>write the property, is the file writeable, can the database handle
<br>external metdata.<br><br>Groups are defined separately from the types. They are simple lists of<br>metadata type uris. All children of these URI&#39;s also fall into this<br>group. Groups are also identified by a URI and they have translations
<br>in different languages for the user interfaces. They may also have a<br>short keyword form. The metadata types in a group do not need to have<br>the same cardinality or data type.<br><br>What do you think?</blockquote>
<div><br><br>This was somewhat close to the things I have been thinking about. I have to give this a bit more though when I get home... <br></div><br>Cheers,<br>Mikkel<br></div>