[drupal-devel] Schema Changes for a Shared Taxonomy OTF/Folksonomy

Morbus Iff morbus at disobey.com
Wed Mar 9 22:41:46 UTC 2005

I'll be working on this folksonomy thing a lot quicker than I expected. 
I'm not sure if that's a good thing or a bad thing, sadly - there seems to 
be four (mine, moshe's, jbond's, and atf's) current thoughts on how it 
should work. Anyways, I was doing some thinkwork on "my vision" today 
which, to recap, includes:

  * multiple folksonomies ("realms" per jbond; "vocabulary" per Drupal).

  * tags are unique to a unique folksonomy (but, see below).

  * users share tags per a unique folksonomy/vocabulary.
      (note, however, that the admin could see create two folksonomies,
      assign them to different node types, or even to the same type,etc.,
      and "funny" could be a unique value in two different folksonomies.)

With that said, it appears that two taxonomy tables would change:

  * The first would be "term_data". It would include a new "uid"
    field which would be the uid of the user who created the term.
    In vocabularies that were not folksonomies, uid would be 0.

  * The second would be "term_node", which would need a new "uid"
    column as well. This would represent the uid that assigned
    the tid to the nid. This is the change that concerns me:

      * instead of just one tid (3)/nid (5) relation in a normal
        vocabulary, this change would potentially allow an
        infinite number, as multiple uids apply the same
        tid to the same nid.

      * theoretically, if the tid's vid (this is fun to say!)
        is not a folksonomy, then the uid would be 0, as before.
        but, I can see the uid being useful regardless. If
        multiple admins are editing a nid, then it could be
        quite useful to see that uid (45) added tid (12), and
        then, a day later, uid (23) decided that tid (15) was
        equally as relevant.

With the above changes, the following would be possible:

  * a "my users" page would be easiliy implemented by just
    grabbing all term_node's that match the $uid (presumably,
    we wouldn't need a join here as the $user object would
    be loaded normally).

  * ownership of tags is possible by checking for
    the uid of the tid in the term_data table.

  * All relations/synonyms would utilize the same old code.

  * We don't have to rely on the taxonomy UI, because the
    vocabulary.module would be "folksonomy". In 4.6, it'd
    be hidden in the standard "categories" menu, and we can
    focus on just the UI and added features in folksonomy.module.


Morbus Iff ( you are nothing without your robot car, NOTHING! )
Culture: http://www.disobey.com/ and http://www.gamegrene.com/
Spidering Hacks: http://amazon.com/exec/obidos/ASIN/0596005776/disobeycom
icq: 2927491 / aim: akaMorbus / yahoo: morbus_iff / jabber.org: morbus

More information about the drupal-devel mailing list