Pingback Module for RSS 1.0/2.0

Authors

Justin Klubnik, justin.madskills.com
Ian Hickson, ian@hixie.ch (Pingback author)
Stuart Langridge, sil@kryogenix.org (Pingback author)

Version

Current Version: 1.0 (Draft)

Rights

Permission to use, copy, modify and distribute the RSS 1.0/2.0 Pingback Module Specification and its accompanying documentation for any purpose and without fee is hereby granted in perpetuity, provided that the above copyright notice and this paragraph appear in all copies. The copyright holders make no representation about the suitability of the specification for any purpose. It is provided "as is" without expressed or implied warranty.

This copyright applies to the RSS 1.0/2.0 Pingback Module Specification and accompanying documentation and does not extend to the RSS Module's format itself.

Note

In any conflicts between this specification and the Pingback specification, the Pingback specification should be preferred.

Description

The RSS Pingback module builds off of the Pingback system originally developed by Ian Hickson and Stuart Langridge. Pingback is "a method for web authors to request notification when somebody links to one of their documents." This module attempts to provide relevant information for Pingback services in RSS.

This module uses Pingback URLs in a such a way as to allow RSS items to communicate the location of their Pingback server, as well as the value that should be passed as the targetURI when pinging.

Namespace Declarations

Syntax

RSS 1.0 (RDF Site Summary) and RSS 2.0 (Really Simple Syndication) have different data models. As a result, the syntax of this module will vary between the two formats. The meaning of the various elements remains essentially the same between the two.

pingback:server

pingback:server is a sub-element of an RSS item, and contains the URL of the item's Pingback server. Each RSS item may contain only one instance of pingback:server

pingback:target

pingback:target is a sub-element of an RSS item, and contains the value that should be used as the targetURI in a ping.

The following example shows an RSS item element including its Pingback server's URL and it's targetURI in an RSS 1.0 feed. Each RSS item may contain only one instance of pingback:target

	<!-- beginning of RSS document omitted for brevity -->
	<item rdf:about="http://foo.com/weblog/2003/01/10/pb_in_rss.html">
		<title>Pingback in RSS</title>
		<link>http://foo.com/weblog/2003/01/10/pb_in_rss.html</link>
		<description>Through the magic of modules, RSS now supports Pingback!</description>
		<pingback:server rdf:resource="http://foo.com/pingback/"/>
		<pingback:target rdf:resource="http://foo.com/weblog/2003/01/10/pb_in_rss.html"/>
	</item>
	<!-- the rest of the RSS document continues below -->

The following example shows an RSS item element including the same information in an RSS 2.0 feed

	<!-- beginning of RSS document omitted for brevity -->
	<item rdf:about="http://foo.com/weblog/2003/01/10/pb_in_rss.html">
		<title>Pingback in RSS</title>
		<link>http://foo.com/weblog/2003/01/10/pb_in_rss.html</link>
		<description>Through the magic of modules, RSS now supports Pingback!</description>
		<pingback:server>http://foo.com/pingback/</pingback:server>
		<pingback:target>http://foo.com/weblog/2003/01/10/pb_in_rss.html</pingback:target>
	</item>
	<!-- the rest of the RSS document continues below -->

In essence, these RSS items are now saying, "My Pingback server is located at http://foo.com/pingback/, and my targetURI is http://foo.com/weblog/2003/01/10/pb_in_rss.html"

pingback:about

pingback:about is a sub-element of an RSS item, and contains a targetURL that was pinged in reference to this RSS item. Each RSS item may contain zero or more instances of pingback:about.

The following example shows an RSS item element that, in addition to including the location of its Pingback server and its own targetURI, also includes a reference to a target URL it has pinged in an RSS 1.0 feed

	<!-- beginning of RSS document omitted for brevity -->
	<item rdf:about="http://bar.com/weblog/rss_plus_pingback.html">
		<title>RSS + Pingback = Fun!</title>
		<link>http://bar.com/weblog/rss_plus_pingback.html</link>
		<description>I just found out that I can put Pingback data in my RSS feed. How cool is that!?</description>
		<pingback:server rdf:resource="http://bar.com/pingback/"/>
		<pingback:target rdf:resource="http://bar.com/weblog/rss_plus_pingback.html"/>
		<pingback:about rdf:resource="http://foo.com/weblog/2003/01/10/pb_in_rss.html"/>
	</item>
	<!-- the rest of the RSS document continues below -->

The following example shows the same thing being accomplished in an RSS 2.0 feed.

	<!-- beginning of RSS document omitted for brevity -->
	<item rdf:about="http://bar.com/weblog/rss_plus_pingback.html">
		<title>RSS + Pingback = Fun!</title>
		<link>http://bar.com/weblog/rss_plus_pingback.html</link>
		<description>I just found out that I can put Pingback data in my RSS feed. How cool is that!?</description>
		<pingback:server>http://bar.com/pingback/</pingback:server>
		<pingback:target>http://bar.com/weblog/rss_plus_pingback.html</pingback:target>
		<pingback:about>http://foo.com/weblog/2003/01/10/pb_in_rss.html</pingback:about>
	</item>
	<!-- the rest of the RSS document continues below -->

In essence, these RSS items are now saying, "My Pingback server is located at http://bar.com/pingback/, my targetURI is http://bar.com/weblog/rss_plus_pingback.html, and I have pinged http://foo.com/weblog/2003/01/10/pb_in_rss.html in reference to this post via Pingback"

Applications

The inclusion of Pingback data in RSS feeds allows for the further automation of the Pingback process. With Pingback data embedded in RSS, properly designed software applications can now automatically handle the discovery of the Pingback server URL and targetURI, and ping it when appropriate. Tools designed around RSS aggregation can use the embedded Pingback information to infer connections between posts.