On Thu, 2013-04-11 at 18:12 +0530, Vishesh Handa wrote:


> If it's possible could you please elaborate as to how this is
> implemented in the database?

It's implemented in the SQLite tables as an extra column.


> Oh. So, suppose a music file existed with a performer "Coldpay" and
> modified the id3 tags to now say "Coldplay". The file would get
> reindexed and it would now have both performers? The old and the new
> one?

> The performer is generally stored with a 'nmm:performer' property and
> does not have a max cardinality of 1.

No, multivalue properties are first clearned and then rewritten (by
miner-fs). When another client adds a value to a multivalue property
then the graph of all is set to the clients', so miner-fs wont overwrite
it anymore.

An example:

1) file.mp3 a nmm:MusicPiece has nmm:performer 'somebody' as extracted
by tracker-extract/miner-fs and written in tracker-store:

GRAPH <miner-fs> {
<urn> a nmm:MusicPiece, nfo:FileDataObject;
   nie:url 'file://.../file.mp3';
   nie:title 'test';
   nmm:performer 'somebody' .
}

2) client updates nmm:performer:

GRAPH <client> {
<urn> nmm:performer 'somebody else' .
}

3) Result:

GRAPH <miner-fs> {
<urn> a nmm:MusicPiece, nfo:FileDataObject;
   nie:title 'test';
   nie:url 'file://.../file.mp3' ;
   nfo:lastModifiedSomething '...' .
}

GRAPH <client> {
<urn> nmm:performer 'somebody else' .
}

4) miner-fs sees an update on file.mp3, update is on performer and
title:

GRAPH <miner-fs> {
  <urn> nie:title 'new title';
        nfo:lastModifiedSomething '...' .
}

Because miner-fs won't change statements that aren't in its own graph
and because we support only one graph per statement (meaning that client
has overwritten it for nmm:performer).

Kind regards,

Philip

-- 
Philip Van Hoof
Software developer
Codeminded BVBA - http://codeminded.be

_______________________________________________
tracker-list mailing list
tracker-list@gnome.org
https://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to