Draft Specification 2005-01-10

Copyright

This specification is (C) 2004-2018 by the authors. However, the authors intend to submit (or already have submitted, see details in the spec) this specification to a standards body with a liberal copyright/licensing policy such as the GMPG, IETF, and/or W3C. Anyone wishing to contribute should read their copyright principles, policies and licenses (e.g. the GMPG Principles) and agree to them, including licensing of all contributions under all required licenses (e.g. CC-by 1.0 and later), before contributing.

Tantek: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.

Kevin Marks: I release all my contributions to this specification into the public domain and I encourage the other authors to do so as well.

When all authors/editors have done so, we can remove the MicroFormatCopyrightStatement template reference and replace it with the MicroFormatPublicDomainContributionStatement.

Patents

Abstract

Rel-Tag is one of several MicroFormats. By adding rel="tag" to a hyperlink, a page indicates that the destination of that hyperlink is an author-designated "tag" (or keyword/subject) for the current page. Note that a tag may just refer to a major portion of the current page (i.e. a blog post). e.g. by placing this link on a page,

<ahref="http://technorati.com/tag/tech"rel="tag">tech</a>

the author indicates that the page (or some portion of the page) has the tag "tech".

The linked page SHOULD exist, and it is the linked page, rather than the link text, that defines the tag. The last path component of the URL
is the text of the tag, so

<ahref="http://technorati.com/tag/tech"rel="tag">fish</a>

would indicate the tag "tech" rather than "fish".

Scope

rel="tag" is NOT designed for "tagging" arbitrary URLs or external content. There is demand for a general decentralized syntax for tagging URLs external to the current page, but this is not meant for that. See xFolk and hReview for ways to tag arbitrary URLs.

If you need to define tags as part of a more specialized format, rel="tag" is the recommended way to do so, and xFolk, hReview, hCard, hCalendar and hRecipe all do this.

XMDP profile

Tag Spaces

Tags are embedded in HTTP URIs in a well-defined manner so that the tag embedded in an HTTP URI can be mechanically extracted from that URI. Specifically, the last segment of the path portion of the URI (after the final "/" character) contains the tag value. For example, the URI

http://www.example.com/tags/foo

contains the tag "foo".

Thus, for the purposes of comparing two HTTP URIs as tags, the last segment of the path portion should be extracted and only that value (that value of the tag) should be compared.

Need more formal language about comparison and extraction process.

The destination of a rel="tag" hyperlink is required to be a tag space (a place that collates or defines tags), where the last segment of the path of the URL is the tag, e.g.

http://technorati.com/tag/tech

is a URL for the tag "tech".

Tags may only be placed in the URL path, and only in the last segment of the path. Tags may not be placed in query parameters or fragment identifiers. e.g.

http://technorati.com/tag/tech?tag=fish#emu

is still a URL for the tag "tech", not "fish" or "emu".

Since the only part of a tag space URL of which any structure is required is the last path segment, a tag space URL can be hosted at any domain. Authors may choose to link to a tag at a particular tag space in order to provide a specific meaning. E.g. a tag for technology could link to:

http://en.wikipedia.org/wiki/Technology

Trailing slashes in tag URLs are ignored, that is:

http://technorati.com/tag/Technology/

as a rel-tag URL is treated as:

http://technorati.com/tag/Technology

Encoding issues

Spaces can be encoded either as + or %20. Unicode characters are encoded as specified in RFC 3986. For example:

Note that if using Wikipedia as a tagspace, as discussed above, you should use %20 as they remap '+' to %2B, causing a page with a plus sign in the title (which usually does not exist) to appear.

Tags Are Visible Metadata

rel="tag" hyperlinks are intended to be visible links on pages and posts. This is in stark contrast to meta keywords (which were invisible and typically never revealed to readers), and thus is at least somewhat more resilient to the problems which plagued meta keywords.

Making tag hyperlinks visible has the additional benefit of making it more obvious to readers if a page is abusing tag links, and thus providing more peer pressure for better behavior. It also makes it more obvious to authors, who may not always be aware what invisible metadata is being generated on their behalf.

As a result the invisible tag link syntax variant: <link rel="tag" href="..." /> SHOULD NOT be supported by implementations.

Examples in the wild

This section is informative. The number of rel-tag examples in the wild has expanded far beyond the capacity of being kept inline in this specification. They have been moved to a separate page.

Implementations

This section is informative.

The following implementations have been developed which either generate or parse rel-tag links. If you have a rel-tag implementation, please add it to the top of this list. Once the list grows too big, we'll make a separate wiki page like rel-tag-implementations.

Degoli is a simple experimental semantic web seach engine which is crawling rel-tag data. It orders search results by rel-tag data and displays a navigation tree containing relationships among tags.

b2evolution A blog platform which generates rel-tag for all tags on blog posts (starting from v3.x).

Discussions

Q&A

If you have any questions about rel-tag, check the rel FAQ first for general rel attribute questions, then check the rel-tag FAQ, and then if you don't find answers, ask your question on the microformats-discuss mailing list.