Hot on the heels of our clickdensity heat-map software, we’ve taken on yet more developers to create our fourth and fifth products. Although the fifth product is ‘top secret’ (read: still a bit ambiguous), the requirements behind it have raised an interesting question about tagging.

Most — if not all — tags are currently used to record the subject-matter of an object. For example, “this is a photo of the Chrysler Building” or “this is a blog entry about Lebanon“.

Could we update this flexible system to allow us to describe more than subject matter, without affecting the simplicity?

If I wanted to say that a photograph was of the Chrysler Building, but taken from the Empire State Building, then tagging it with “chryslerbuilding, empirestatebuilding” doesn’t cut the mustard, as this implies that the photograph is of these two buildings.

Similarly, a blog about Lebanon which is written for children could not be tagged as “lebanon, children” as this would imply an entry about children in Lebanon.

What if we could specify the context of the tag using a delimiter? For the sake of argument, let’s use a # character, to be consistent with fragment identifiers in URLs.

Our above examples could then become:

  • chryslerbuilding, empirestatebuilding#takenfrom
  • lebanon, children#audience

It would be fairly trivial for the application to split these tags and store them separately in the database (it would just need a ‘context’ field alongside the ‘tag’ field). Tags without context would remain subject-matter based. As the tags are split in the database, contextual values can also be searched, as usual.

The separated values (tag value, tag context) could be displayed (in the interface) separately in an easily readable style, or javascript and CSS could be used to style the ‘context’ section of un-split tags.

As with the current tagging system, there would be no pre-defined ontology for the ‘context’ tags (takenfrom, audience, etc.), instead relying on the same folksonomical (my new word for the day) evolution of terms - hopefully resulting in convergence, consistency and re-use.

This approach could also take us a step closer to the Semantic Web, and could even be made compatible with RDF (it would be fairly trivial to XSLT some RDF/triples out of XHTML contextual tags).

Finally, I’ll admit that I don’t use much software that makes use of tagging, so if this problem already has a solution (or won’t work) then please let me know (along with any other thoughts) below.