Re: Proposing Tracker for inclusion into GNOME 2.18



Shaun McCance wrote:
On Wed, 2006-10-25 at 11:20 +0100, Jamie McCracken wrote:
James "Doc" Livingston wrote:
What would be really cool is support for field groups, but that would
probably require a fairly large change. So you could do things like
correctly storing the release dates when a track is on multiple albums:

Title=Some Track
Artist=Artist
(Album=X, ReleaseDate=2000/1/1)
(Album=Y, ReleaseDate=2001/2/2)
that would be tricky unless the album was a separate object

I spent a good long while trying to make a complete metadata
ontology for musical recordings.  Some of these things just
get really tricky.

The release date is clearly a property of the album itself,
so the proposal above is basically trying to store album
properties without actually talking about the album.

A related but harder issue is when you have some property
that really belongs to the track-album pair, and not to
either particular object.  (Think of child properties in
GTK+: "expand" belongs neither to a GtkBox or to whichever
GtkWidget is inside it, but rather to the pair).

Track numbers are the easiest example of this.  A track
might be number 2 on Album 1 and number 7 on Album 2.
Clearly, the track itself can't just have a track number.
And the track number obviously doesn't belong to either
album.

One clever mathy way of addressing this is to recognize
that a relation R on S and T is just  subset R ⊂ T x S.
Then a combo property can be a mapping from T x S into
some other set.

The more practical way of solving this is to say that
a track is on only one album, and then create relations
to say that two tracks are basically the same.


As far as I can see, a music album is a separate first class object.

The relationship between albums and tracks is a many-to many one (IE one track can be on many albums and one album can contain many tracks) so this cannot realistically be modelled as a single object or table.

The way RhythmBox uses albums also suggests its a separate first class object

Its easy enough for us to this implement it like that in tracker.

--
Mr Jamie McCracken
http://jamiemcc.livejournal.com/




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]