« Prospecting for ORE | Main | More ORE »

January 25, 2007

Flickr Machine Tags and API changes

A while ago I wrote about a structured tag convention that I use to add Dublin Core metadata to items in my del.icio.us bookmark collection (and other similar collections). e.g. I use the pair of tags 

dctagged dc:creator=Berners-LeeTim

to indicate that a resource is created by Tim Berners-Lee.

I noted then that this approach had been based on other structured tagging (or perhaps more accurately "triple tagging") conventions, particularly on GeoTagging, which also uses a "qualified name"/"namespacing" convention in its tag structure.

There are limitations, of course, in how much of that "sub-tag" structure I can exploit through the del.icio.us browser interface and APIs. I can browse/search by full tag, but I can't easily do queries like:

  • "find all items for which the value of the dc:creator property is an entity whose name begins with 'Powell'" or
  • "find all items related (by any property) to the entity whose name is 'PowellAndy'"

So I'm very interested to see an announcement yesterday by Flickr (discovered via a post by Danny Ayers) which describes an enhancement to the Flickr API which does allow an application to construct queries on such structured tags, which Flickr are referring to as "machine tags". In their list of example queries, they include some examples using a "dc" namespace in i.e. these queries could be applied to a set of items tagged using the conventions I described in my earlier post (though I think you have to re-save existing items in order for Flickr to take existing tags that look like "machine tags" and process them as "machine tags", if you see what I mean!):

  • Find photos using the 'dc' namespace :
       {"machine_tags" => "dc:"}
  • Find photos with a title in the 'dc' namespace :
       {"machine_tags" => "dc:title="}
  • Find photos titled "mr. camera" in the 'dc' namespace :
        {"machine_tags" => "dc:title=\"mr. camera\"}
  • Find photos whose value is "mr. camera" :
       {"machine_tags" => "*:*=\"mr. camera\""}
  • Find photos that have a title, in any namespace :
       {"machine_tags" => "*:title="}
  • Find photos that have a title, in any namespace, whose value is "mr. camera" :
       {"machine_tags" => "*:title=\"mr. camera\""}
  • Find photos, in the 'dc' namespace whose value is "mr. camera" :
       {"machine_tags" => "dc:*=\"mr. camera\""}

Whereas I had proposed the use of a dctagged tag as an implicit "namespace declaration" (for both the dc and dcterms "namespaces") - much like the geotagged tag in GeoTagging - the Flickr document incorporates an explicit "namespace declaration" convention, borrowing directly the conventon used in XML Namespaces i.e. using tags like xmlns:dc=http://purl.org/dc/elements/1.1/, which would enable different users to map the dc prefix to different "namespace URIs" if they wished to do so.

Leaving aside the DC-specific aspect, I think the more general point is captured by Dan Catt of Flickr in a post on the geobloggers weblog:

However, the take away point for me here … [disclaimer: I work for Flickr] … is that a massive site (Flickr) with over 3 billion photos and goodness knows how many tags to go along with that. Have modified their databases, tweaked code and written APIs to allow and encourage developers to use Machine Tags. Which to me, marks a recognition and evolution in Tags and how they can be used.

Flickr already has good support for the creation and use of geotags. It'll be interesting to see what services emerge based on other machine tag sets. Exciting stuff.


TrackBack URL for this entry:

Listed below are links to weblogs that reference Flickr Machine Tags and API changes:


Tags become metadata. And so we go full circle - tags become that which they were intended to replace.

The comments to this entry are closed.



eFoundations is powered by TypePad