Contents: Introduction · Example · Basic Personal Feeds · Adding External Feeds · Adding Groups of Feeds · Upload Customizations
At A Glance uses RSS 1.0 with some embellishments to control its configuration. The details of those embellishments are explained below. After reading this document, you should be able to generate a file containing your personal Glance feed preferences which successfully displays after uploading via the personal preferences interface [member-only]. This How-To assumes a working knowledge of RSS 1.0 terms and RDF.
Note the two namespaces used in this document:
http://purl.org/rss/1.0/
for RSS 1.0, bound to
rss:
, and
http://www.w3.org/2001/10/glance/vocab#
for Glance,
which is bound to glance:
in all of the following
text. Examples bind their own namespaces accordingly.
This documents a member-only feature; links to member-only examples are marked as such.
Currently, there aren't any good tools to generate a personalized feed besides a text editor. For those comfortable editing RDF with their text editor of choice, this is what an excerpt from an average RSS 1.0 feed looks like:
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rss="http://purl.org/rss/1.0/" xmlns="http://purl.org/rss/1.0/"> <channel rdf:about=""> <title>W3C Web Ontology (WebOnt) Working Group (OWL)</title> <link>http://www.w3.org/2001/sw/WebOnt/</link> <items> <rdf:Seq> <rdf:li rdf:resource="#1"/> <rdf:li rdf:resource="#2"/> <rdf:li rdf:resource="#3"/> <rdf:li rdf:resource="#4"/> <rdf:li rdf:resource="#5"/> </rdf:Seq> </items> </channel> <item rdf:about="#1"> <title>working toward completing dra...</title> <link>http://www.w3.org/2001/sw/WebOnt/</link> <description>working toward completing draft CR/PR request, last call review status; collecting tools and implementation experience (20 Feb from Connolly)</description> </item> ... </rdf:RDF>
The At A Glance public configuration feed is the archetype for configuring which feeds Glance aggregates. It uses the same vocabulary as an RSS feed and introduces a hierarchy of channels. The feeds in the public, member, and team configurations are available by default to users with the correct permissions.
Note the hierarchy of channels, which happens to mirror the hierarchy of the W3C's organization. The following is an excerpt including a domain, activity, and activity-related feeds.
<!DOCTYPE rdf:RDF [ <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'> <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'> <!ENTITY rss 'http://purl.org/rss/1.0/'> <!ENTITY gl 'http://www.w3.org/2001/10/glance/vocab#'> <!ENTITY this 'http://www.w3.org/2001/10/glance/config#'> ]> <rdf:RDF xmlns:rdf="&rdf;" xmlns:rdfs="&rdfs;" xmlns:gl="≷" xmlns="&rss;"> <!-- Top Channel that includes all W3C Domains --> <channel rdf:about="&this;glance"> <gl:displayTitle>At A Glance</gl:displayTitle> <title>W3C At A Glance</title> <link>&this;glance</link> <description>One stop shopping for all of your W3C information needs.</description> <items> <rdf:Seq> <rdf:li rdf:resource="&this;comm"/> <rdf:li rdf:resource="&this;tands"/> <rdf:li rdf:resource="&this;arch"/> <rdf:li rdf:resource="&this;interaction"/> <rdf:li rdf:resource="&this;wai"/> <rdf:li rdf:resource="&this;qappt"/> </rdf:Seq> </items> </channel> <!-- Channels for Domains --> <channel rdf:about =" &this;tands"> <gl:displayTitle>Tech / Society</gl:displayTitle> <title>W3C Technology and Society Domain</title> <link>http://www.w3.org/TandS/</link> <description>The W3C Technology and Society Domain seeks to develop Web infrastructure to address social, legal, and public policy concerns. </description> <items> <rdf:Seq> <rdf:li rdf:resource="&this;swa" /> </rdf:Seq> </items> </channel> <!-- Channels for Activities --> <channel rdf:about="&this;swa"> <gl:displayTitle>Semantic Web</gl:displayTitle> <title>W3C Semantic Web Activity</title> <link>http://www.w3.org/2001/sw/</link> <description>The W3C Semantic Web Activity</description> <items> <rdf:Seq> <rdf:li rdf:resource="http://www.w3.org/2001/sw/Overview-events.rss"/> <rdf:li rdf:resource="http://rdfig.xmlhack.com/index.rss"/> <rdf:li rdf:resource="http://www.w3.org/2001/sw/WebOnt/scrapedFeed.rss"/> </rdf:Seq> </items> </channel> <!-- Channels --> <channel rdf:about="http://www.w3.org/2001/sw/Overview-events.rss"> <gl:displayTitle>News and Events</gl:displayTitle> </channel> <channel rdf:about="http://rdfig.xmlhack.com/index.rss"> <gl:displayTitle>SW/RDF IG</gl:displayTitle> </channel> ... </rdf:RDF>
The basic personal feed, which you can obtain by exporting your current preferences,
[member-only] must be based on the channel
http://www.w3.org/2001/10/glance/personal#personal
.
The RDF exported by Glance may look a little odd when compared to the
average RSS 1.0 feed, but the serialization (done through the Jena toolkit) is correct.
The channels included in the exported references point at channels available through Glance's default configuration. Those shouldn't be modified or appended to since Glance will first try to refer to its default configuration when displaying feeds.
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:NS0='http://www.w3.org/2001/10/glance/vocab#' xmlns:rss='http://purl.org/rss/1.0/' > <rdf:Description rdf:about='http://www.w3.org/2001/10/glance/personal#personal'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>Custom Glance</NS0:displayTitle> <rss:title>W3C At A Glance - Custom</rss:title> <rss:link>http://www.w3.org/2001/10/glance/personal#personal</rss:link> <rss:description>Your custom view of W3C information and news.</rss:description> <rss:items rdf:nodeID='A0'/> </rdf:Description> <rdf:Description rdf:nodeID='A0'> <rdf:type rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq'/> <rdf:_1 rdf:resource='http://www.w3.org/2001/10/glance/config#tands'/> <rdf:_2 rdf:resource='http://www.w3.org/2000/08/w3c-synd/home.rss'/> </rdf:Description> <rdf:Description rdf:about='http://www.w3.org/2000/08/w3c-synd/home.rss'> <NS0:displayTitle>Home Page</NS0:displayTitle> </rdf:Description> <rdf:Description rdf:about='http://www.w3.org/2001/10/glance/config#tands'> <NS0:displayTitle>Tech / Society</NS0:displayTitle> </rdf:Description> </rdf:RDF>
To add an external feed, include it as an rss:item
in
the appropiate rss:items
list, then add it as an
individual rss:channel
with a glance:displayTitle
.
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:NS0='http://www.w3.org/2001/10/glance/vocab#' xmlns:rss='http://purl.org/rss/1.0/' > <rdf:Description rdf:about='http://www.w3.org/2001/10/glance/personal#personal'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>Custom Glance</NS0:displayTitle> <rss:title>W3C At A Glance - Custom</rss:title> <rss:link>http://www.w3.org/2001/10/glance/personal#personal</rss:link> <rss:description>Your custom view of W3C information and news.</rss:description> <rss:items rdf:nodeID='A0'/> </rdf:Description> <rdf:Description rdf:nodeID='A0'> <rdf:type rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq'/> <rdf:_1 rdf:resource='http://www.w3.org/2001/10/glance/config#tands'/> <rdf:_2 rdf:resource='http://www.w3.org/2000/08/w3c-synd/home.rss'/> <rdf:_3 rdf:resource='http://www.example.org/feed.rdf'/> </rdf:Description> <rdf:Description rdf:about='http://www.w3.org/2000/08/w3c-synd/home.rss'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>Home Page</NS0:displayTitle> </rdf:Description> <rdf:Description rdf:about='http://www.w3.org/2001/10/glance/config#tands'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>Tech / Society</NS0:displayTitle> </rdf:Description> <rdf:Description rdf:about='http://www.example.org/feed.rdf'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>An Example Feed</NS0:displayTitle> </rdf:Description> </rdf:RDF>
If the channel appears to be blank when displaying in Glance, then
the URI the RSS feed sits at and the channel the feed is actually about
are probably different. You'll have to look in the feed, determine
which URI the channel claims to be about, and use that instead of the
location of the feed. In addition, you'll need to add a
glance:feed
property to the channel. See the example
below where the feed is located at http://www.example.org/feed.rdf
but is actually about the channel http://www.example.org/
.
See the ESW
Wiki feed for a live example of a feed with a different channel URI.
<rdf:Description rdf:about='http://www.w3.org/2001/10/glance/personal#personal'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>Custom Glance</NS0:displayTitle> <rss:title>W3C At A Glance - Custom</rss:title> <rss:link>http://www.w3.org/2001/10/glance/personal#personal</rss:link> <rss:description>Your custom view of W3C information and news.</rss:description> <rss:items rdf:nodeID='A0'/> </rdf:Description> <rdf:Description rdf:nodeID='A0'> <rdf:type rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq'/> <rdf:_3 rdf:resource='http://www.example.org/'/> </rdf:Description> <rdf:Description rdf:about='http://www.example.org/'> <rdf:type rdf:resource='http://purl.org/rss/1.0/channel'/> <NS0:displayTitle>An Example Feed</NS0:displayTitle> <NS0:feed rdf:resource='http://www.example.org/feed.rdf'/> </rdf:Description> </rdf:RDF>
Adding a group is essentially the same as adding an external
feed, except at another point in the hierarchy. The group should
be fully described using a rss:title
,
rss:description
, glance:displayTitle
,
and rss:items
and be included in the appropriate list
of feeds.
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:NS0='http://www.w3.org/2001/10/glance/vocab#' xmlns:rss='http://purl.org/rss/1.0/' > <rdf:Description rdf:about='http://www.w3.org/2001/10/glance/personal#personal'> ... <rdf:_2 rdf:resource='http://www.w3.org/2000/08/w3c-synd/home.rss'/> <rdf:_3 rdf:resource='#Industry'/> </rdf:Description> ... <rss:channel rdf:about='#Industry'> <NS0:displayTitle>Industry</NS0:displayTitle> <rss:title>Industry</rss:title> <rss:description>News from the industry</rss:description> <rss:items> <rdf:Seq> <rdf:li rdf:resource='http://www.example.org/industry.rss'/> <rdf:li rdf:resource='http://www.example.com/summaries.rss'/> </rdf:Seq> </rss:items> </rss:channel> <rss:channel rdf:about='http://www.example.org/industry.rss'> <NS0:displayTitle>Industry News</NS0:displayTitle> </rss:channel> ... </rdf:RDF>
You can store your personalized feed on your hard disk or on the web. Glance can deal with uploaded files or with URIs. The upload interface is available on the preferences page [member-only].
A working example is available on the web.