rel-tag: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
(→‎Scope: added hRecipe)
(note rel-tag incorporated into HTML5)
(41 intermediate revisions by 22 users not shown)
Line 9: Line 9:
:[http://powazek.com/ Derek Powazek]
:[http://powazek.com/ Derek Powazek]


;Incorporated into
:[https://www.w3.org/TR/html5/links.html#link-type-tag W3C HTML5]
=== Copyright ===
=== Copyright ===
{{MicroFormatCopyrightStatement2004}}
{{MicroFormatCopyrightStatement2004}}
Line 21: Line 23:
[[Rel-Tag]] is one of several [[MicroFormats]].  By adding <code>rel=&quot;tag&quot;</code> to a hyperlink, a page indicates that the destination of that hyperlink is an author-designated &quot;tag&quot; (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,
[[Rel-Tag]] is one of several [[MicroFormats]].  By adding <code>rel=&quot;tag&quot;</code> to a hyperlink, a page indicates that the destination of that hyperlink is an author-designated &quot;tag&quot; (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,


<pre><nowiki><a href=&quot;http://technorati.com/tag/tech&quot; rel=&quot;tag&quot;>tech</a></nowiki></pre>
<source lang=html4strict><a href="http://technorati.com/tag/tech" rel="tag">tech</a></source>


the author indicates that the page (or some portion of the page) has the tag &quot;tech&quot;.
the author indicates that the page (or some portion of the page) has the tag &quot;tech&quot;.
Line 28: Line 30:
is the text of the tag, so  
is the text of the tag, so  


<pre><nowiki><a href=&quot;http://technorati.com/tag/tech&quot; rel=&quot;tag&quot;>fish</a></nowiki></pre>
<source lang=html4strict><a href="http://technorati.com/tag/tech" rel="tag">fish</a></source>


would indicate the tag &quot;tech&quot; rather than &quot;fish&quot;.
would indicate the tag &quot;tech&quot; rather than &quot;fish&quot;.
Line 40: Line 42:


== XMDP profile ==
== XMDP profile ==
http://microformats.org/wiki/rel-tag-profile
See [[rel-tag-profile]].


== Tag Spaces ==
== 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 <pre><nowiki>http://www.example.com/tags/foo</nowiki></pre> contains the tag &quot;foo&quot;.  
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 <source lang=html4strict>http://www.example.com/tags/foo</source> contains the tag &quot;foo&quot;.  


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.
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.
Line 52: Line 54:
The destination of a rel=&quot;tag&quot; 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.  
The destination of a rel=&quot;tag&quot; 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.  


<pre><nowiki>http://technorati.com/tag/tech </nowiki></pre>
<source lang=html4strict>http://technorati.com/tag/tech </source>


is a URL for the tag &quot;tech&quot;.
is a URL for the tag &quot;tech&quot;.
Line 58: Line 60:
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.
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.


<pre><nowiki>http://technorati.com/tag/tech?tag=fish#emu </nowiki></pre>
<source lang=html4strict>http://technorati.com/tag/tech?tag=fish#emu </source>


is still a URL for the tag &quot;tech&quot;, not &quot;fish&quot; or &quot;emu&quot;.
is still a URL for the tag &quot;tech&quot;, not &quot;fish&quot; or &quot;emu&quot;.
Line 64: Line 66:
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:
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:


<pre><nowiki>  http://en.wikipedia.org/wiki/Technology </nowiki></pre>
<source lang=html4strict>  http://en.wikipedia.org/wiki/Technology </source>


Trailing slashes in tag URLs are ignored, that is:
Trailing slashes in tag URLs are ignored, that is:


<pre><nowiki>  http://technorati.com/tag/Technology/ </nowiki></pre>
<source lang=html4strict>  http://technorati.com/tag/Technology/ </source>
as a rel-tag URL is treated as:
as a rel-tag URL is treated as:
<pre><nowiki>  http://technorati.com/tag/Technology </nowiki></pre>
<source lang=html4strict>  http://technorati.com/tag/Technology </source>


== Encoding issues ==
== Encoding issues ==
Spaces can be encoded either as <code>+</code> or <code>%20</code>. Unicode characters are encoded as specified in [http://www.ietf.org/rfc/rfc3986.txt <nowiki>RFC 3986</nowiki>]. For example:
Spaces can be encoded either as <code>+</code> or <code>%20</code>. Unicode characters are encoded as specified in [http://www.ietf.org/rfc/rfc3986.txt <nowiki>RFC 3986</nowiki>]. For example:


<pre><nowiki><a href=&quot;http://technorati.com/tag/Sant%C3%A9+et+bien-%C3%AAtre&quot; rel=&quot;tag&quot;>Santé et bien-être</a> </nowiki></pre>
<source lang=html4strict><a href="http://technorati.com/tag/Sant%C3%A9+et+bien-%C3%AAtre" rel="tag">Santé et bien-être</a> </source>


Note that if using Wikipedia as a tagspace, as discussed above, you should use <code>%20</code> as they remap '+' to <code>%2B</code>, causing  a page with a plus sign in the title (which usually does not exist) to appear.
Note that if using Wikipedia as a tagspace, as discussed above, you should use <code>%20</code> as they remap '+' to <code>%2B</code>, causing  a page with a plus sign in the title (which usually does not exist) to appear.
Line 86: Line 88:
As a result the invisible tag link syntax variant: <code><link rel=&quot;tag&quot; href=&quot;...&quot; /></code> SHOULD NOT be supported by implementations.
As a result the invisible tag link syntax variant: <code><link rel=&quot;tag&quot; href=&quot;...&quot; /></code> SHOULD NOT be supported by implementations.


==Examples in the Wild==
== Examples in the wild ==
This section is '''informative'''.
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 [[rel-tag-examples-in-wild|separate page]].


The following sites have implemented rel-tag, and thus are a great place to start for anyone looking for examples "in the wild" to try parsing, indexing, organizing etc. If your site marked up with rel-tag, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page.
See [[rel-tag-examples-in-wild|rel-tag Examples in the wild]].
 
* [http://huffduffer.com/ Huffduffer] uses rel-tag on every page, pointing to its own tag space e.g. http://huffduffer.com/tags/microformats
* [http://www.pantrymothtrap.com/ Pantry Moth Traps] implements the rel-tag in articles where an authoritative source is known.  (for example in the article [http://www.pantrymothtrap.com/MothTrapsPick.html Moth Trap Picks] the tag [http://www.cleanertoday.com/tag/moth%20trap Moth Trap])
* [http://www.hightechcville.com/ HighTechCville] uses rel-tag on all the pages listing tagged content for [http://www.hightechcville.com/people people], [http://www.hightechcville.com/organizations organizations] and [http://www.hightechcville.com/events events] related to high tech in Charlottesville, VA.
* [http://skateboardspot.info skateboardspot.info] uses rel-tag in spotguide entries which are added to the site and categorized by the users (for example: [http://skateboardspot.info/cat/spotguide/action/view/id/1 “El Toro High School” spotguide entry]).
* [http://www.idoneos.com Idoneos.com] uses rel-tag for conceptual links to its own tag space, a collection of 'concepts' (mostly spanish).
* [http://www.professionalontheweb.com Professional On The Web]  uses rel-tag for user entered tags which categorize web professionals and freelancers.
* [https://www.coderesort.com/p/epicode/wiki/CloudCuckoo CloudCuckoo] (secure site but open to all) an [http://www.episerver.com EPiServer] module distributed free by [http://www.interakting.co.uk Interakting], generates tag clouds with rel-tag links.
* [http://www.lifetime.com Lifetime.com] uses rel- and rev-tags in all content pages.
* [http://www.my-warehouse.de the my-Warehouse shopsystem] implements rel-tags in box headings and categories links.
* Joseph Bergantine uses tags to categorize [http://bergantinedesign.us/wallpaper/ wallpapers] and [http://bergantinedesign.us/blog/my-name-is-rachel-corrie blog posts]
* [http://www.codesignville.com Codesignville] uses rel-tag to indicate content categories.
* [http://www.bossalive.com BossaLive] uses rel-tag for tagging music. Publishes rel-tags for album, artist and genre.
** Also uses [[hcard|hCard]] on user profile pages.
* [http://www.qmpeople.com/ qmpeople] Uses rel-tag for translated tags into english, french and italian to meet new friends in different countries.
* [http://www.keevu.com Keevu.com] uses rel-tag to indicate content categories on most pages, like [http://www.keevu.com/venues venues]
* [http://www.amazingincredible.com Amazing Incredible] uses rel-tag on content pages
* [http://www.auctionlink.com.au AuctionLink] uses rel-tag on [http://www.auctionlink.com.au/TagList/Auctioneers/ Auction Sales Listings] tags.
** Could also use [[hcard|hCard]], e.g. on [http://www.auctionlink.com.au/Auctioneers/Auctioneer/Bonhams_Goodman_1/] [[User:AndyMabbett|Andy Mabbett]]
* Christian Hess uses rel-tag on his [http://www.hess-cr.com homepage blog] and several other pages of his site.
* [http://spacedust.atspace.com/ Spacedust] uses rel-tag to mark up gallery pages.
* [http://my.opera.com/dstorey/blog/ My Opera] uses rel-tag for tags on all user's blog entries.
* [http://dev.opera.com/articles/view/making-wii-friendly-pages/ Dev Opera] uses rel-tag on all article tags.
* [http://www.international.unt.edu UNT International] uses rel-tag to indicate content categories on most pages
* [http://yedda.com Yedda] - Yedda publishes rel-tags for all of the tags the people entered on themselves as well as on all tags entered on questions asked on Yedda.
* [http://www.lingr.com Lingr] publishes rel-tags for all user entered tags.
* [http://odeo.com ODEO] [http://odeo.com/blog/2005/07/adding-microformats-to-odeo.html publishes] rel-tags for user entered tags.
* [http://eventful.com Eventful] publishes rel-tags for user entered tags.
* [http://spinn3r.com Spinn3r] implements rel-tag as well as RSS and Atom subject and categories.
* [http://www.weboffate.com Web of Fate] publishes rel-tags for future predictions.


== Implementations ==
== Implementations ==
This section is '''informative'''.
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, feel free to add it to the '''top''' of this list. Once the list grows too big, we'll make a separate wiki page.
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]].


* [http://degoli.dajbych.net 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.
* [http://b2evolution.net b2evolution] A blog platform which generates rel-tag for all tags on blog posts (starting from v3.x).
* [http://www.textcube.org Textcube.org] makes a blogging tool, Textcube which generates rel-tag for tags on blog posts.
* [http://www.textcube.org Textcube.org] makes a blogging tool, Textcube which generates rel-tag for tags on blog posts.
* [http://hashtags.org/ HashTags] tags Twitter posts, converting "#example" into a tag of "example"
* [http://hashtags.org/ HashTags] tags Twitter posts, converting "#example" into a tag of "example"
Line 136: Line 110:
* The Freetag plugin for the [http://www.s9y.org Serendipity] blog software supports rel-tags on a per-entry basis, as well as inside of its tag clouds.  (The Freetag plugin is available inside of SPARTACUS)
* The Freetag plugin for the [http://www.s9y.org Serendipity] blog software supports rel-tags on a per-entry basis, as well as inside of its tag clouds.  (The Freetag plugin is available inside of SPARTACUS)
* [http://placenamehere.com/TXP/pnh_mf/ pnh_mf] is a plugin for [http://textpattern.com/ Textpattern] that supports embedding rel-tags and other microformats in templates and blog posts. Written by [http://placenamehere.com/ Chris Casciano].
* [http://placenamehere.com/TXP/pnh_mf/ pnh_mf] is a plugin for [http://textpattern.com/ Textpattern] that supports embedding rel-tags and other microformats in templates and blog posts. Written by [http://placenamehere.com/ Chris Casciano].
* [http://www.truist.com/blog/493/trutags-a-tagging-plugin-for-textpattern tru_tags] is a plugin for [http://textpattern.com/ Textpattern] that supports rel-tagging blog posts via the Keywords field.
* [http://www.rainskit.com/blog/493/trutags-a-tagging-plugin-for-textpattern tru_tags] is a plugin for [http://textpattern.com/ Textpattern] that supports rel-tagging blog posts via the Keywords field.
* [http://clothesonline.info ClothesOnline] uses rel-tag for categorizing shops and brands, for example: [http://clothesonline.info/brands/canada-goose Canada Goose].
* [http://news.livejournal.com/86492.html?thread=24881884 LiveJournal] - see also [http://www.livejournal.com/support/faq.bml?cat=tags their FAQ regarding their tags support]
* [http://news.livejournal.com/86492.html?thread=24881884 LiveJournal] - see also [http://www.livejournal.com/support/faq.bml?cat=tags their FAQ regarding their tags support]
* [http://trac.labnotes.org/cgi-bin/trac.cgi/wiki/TagsLinks TagsLinks] Turn each tag into links that let you find related content on tagging services.
* [http://trac.labnotes.org/cgi-bin/trac.cgi/wiki/TagsLinks TagsLinks] Turn each tag into links that let you find related content on tagging services.
* [http://www.octofinder.com OctoFinder] uses rel-tag for all live news tag clouds.
* [http://dev.wp-plugins.org/wiki/BunnysTechnoratiTags Tag plugin for WordPress]
* [http://dev.wp-plugins.org/wiki/BunnysTechnoratiTags Tag plugin for WordPress]
** Note that some sites using WordPress (http://microformatique.com/ for instance) are getting incorrect tags. The tag is ?cat=12 instead of the actual tag value.
** Note that some sites using WordPress (http://microformatique.com/ for instance) are getting incorrect tags. The tag is ?cat=12 instead of the actual tag value.
Line 145: Line 121:
* [http://consumingexperience.blogspot.com/2005/12/updated-multiple-word-technorati-tag.html Greasemonkey script for Firefox that generates tags for Blogger]
* [http://consumingexperience.blogspot.com/2005/12/updated-multiple-word-technorati-tag.html Greasemonkey script for Firefox that generates tags for Blogger]
* [http://tools.microformatic.com/help/xhtml/rel-lint/ rel-lint] is a validation tool by [[User:DrewMcLellan|Drew McLellan]] that will validate existence of rel-tag attributes.
* [http://tools.microformatic.com/help/xhtml/rel-lint/ rel-lint] is a validation tool by [[User:DrewMcLellan|Drew McLellan]] that will validate existence of rel-tag attributes.
== articles ==
This section is '''informative'''.
Articles about rel-tag, most recent first. When this section gets too big, we can move it to [[rel-tag-articles]].
* (undated) [http://reference.sitepoint.com/html/rel-mf#rel__tag SitePoint reference: rel- Microformats / tag] by Ian Lloyd


== References ==
== References ==

Revision as of 19:51, 29 February 2016

<entry-title>rel="tag"</entry-title>

Draft Specification 2005-01-10

Editors/Authors
Tantek Çelik
Kevin Marks
Concept
Derek Powazek
Incorporated into
W3C HTML5

Copyright

This specification is (C) 2004-2024 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

This specification is subject to a royalty free patent policy, e.g. per the W3C Patent Policy, and IETF RFC3667 & RFC3668.

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,

<a href="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

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

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

Scope

rel="tag" is specifically designed for "tagging" content, typically web pages (or portions thereof, like blog posts).

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

See rel-tag-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:

<a href="http://technorati.com/tag/Sant%C3%A9+et+bien-%C3%AAtre" rel="tag">Santé et bien-être</a>

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.

See rel-tag Examples in the wild.

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.

articles

This section is informative.

Articles about rel-tag, most recent first. When this section gets too big, we can move it to rel-tag-articles.

References

Normative References

  • HTML 4
  • XHTML 1
  • XMDP
  • RFC 3986 specifies URL syntax. Section 3.3 specifies URL paths and path segments.

Informative References

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.

Related pages

The rel-tag specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. These thoughts, issues, and questions are kept in separate pages.