Re: Proposing Tracker for inclusion into GNOME 2.18



Wouter Bolsterlee wrote:
2006-10-25 klockan 12:27 skrev Jamie McCracken:
Ross Burton wrote:
On Wed, 2006-10-25 at 11:12 +0100, Jamie McCracken wrote:
With everything mapped 1:1 you can then use RDF query to search them
Why would you need a 1:1 mapping to do a query?  A query for "contacts
with an email of jamiecc blueyonder co uk" should be possible
independent of the number of email addresses a contact can have.
we need the 1:1 mapping to get/set the values. Whatever we implement we must have a unique metadata name for a particular service in order to do that otherwise getting or setting a value would be impossible.

One problem with metadata relationships is that some metadata like in the above case would only be searchable like Contact.JabberID as the actual storage would be in Contact.WorkJabberID or Contact.HomeJabberID so it might get confusing for developers if they try and get the value of Contact.JabberID which would be NULL.
A real world, physical example:

Name: Ross Burton
Email address (personal): ross burtonini com
Email address (personal): ross burton gmail com
Email address (work): ross openedhand com

How would you store this in Tracker?  If we declare that Tracker Contact
objects are *not* vCard clones I can handle dropping the personal/work
annotations for now.
would suggest:

Contact.HomeEmailAddress : ross burtonini com;ross burton gmail com
Contact.WorkEmailAddress : ross openedhand com

note using semicolon as delimiter so contents would need to be escaped for the semicolon. I guess standardising on semicolon delimiters might be a good idea?

Looks pretty useless to me. Delimiters in database field?

The RDF way would be (triples):

  hasPersonalEmail --- rdfs:subPropertyOf ---> hasEmail
  hasWorkEmail     --- rdfs:subPropertyOf ---> hasEmail
  RossBurton       --- hasWorkEmail       ---> ross openedhand com
  RossBurton       --- hasPersonalEmail   ---> ross burtonini com
  RossBurton       --- hasPersonalEmail   ---> ross burton gmail com

You would then be able to query on "hasEmail" and get all three addresses.


okay that looks nice.

I will add some kind of triple store (ie use three tables instead of the current two tracker uses for metadata).

I dont have plans to turn tracker into a full semantic web thing but I do want to take advantage of this in the simplest way possible.

Thanks for showing me the "light" :)

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




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