<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: services-spring08.xml 779 2008-02-27 03:36:33Z dret $ -->
<?xslidy counter-separator=":&#160;" ?>
<?xslidy counter-format="full" ?>
<?xslidy extension-file="html" ?>
<?xslidy extension-link="" ?>
<?xslidy img-path="img" ?>
<?xslidy link-author="http://dret.net/netdret/" ?>
<?xslidy link-contents="./" ?>
<?xslidy link-glossary="http://dret.net/glossary/" ?>
<?xslidy link-home="./" ?>
<?xslidy listing-class="listing" ?>
<?xslidy listing-path="src" ?>
<?xslidy outline-class="outline" ?>
<?xslidy outline-title="Outline" ?>
<?xslidy outlink-mark="a" ?>
<?xslidy outlink-style="class(outlink)" ?>
<?xslidy part-slide-count="all" ?>
<?xslidy part-slide-text=" [*]" ?>
<?xslidy layout="ischool" ?>
<?xslidy xslidy-prefix="xslidy" ?>
<xslidy xmlns="http://dret.net/xmlns/xslidy/1" xmlns:xslidy="http://dret.net/xmlns/xslidy/1">
    <title short="Web-Based Services"><a href="./">Web-Based Services</a> (INFO 290-4)</title>
    <author short="E. Wilde"><a href="http://dret.net/netdret/" title="dret.net">Erik Wilde</a></author>
	<affiliation short="UC Berkeley ISchool"><a href="http://www.berkeley.edu/" title="University of California, Berkeley">UC Berkeley</a> <a href="http://ischool.berkeley.edu/" title="ISchool">School of Information</a></affiliation>
    <date short="Spring 2008">Spring Semester 2008</date>
    <copyright>2008 Erik Wilde</copyright>
	<layout>
		<slide class="cover" cover="slidycover">
			<h1><title/></h1>
			<h3><title level="xslidy"/></h3>
			<h5><author/>, <affiliation/><br/><date/></h5>
			<a rel="license" title="view full text of license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/" class="bottom-align" style="margin-bottom : 2%">
				<table>
					<tr>
						<td align="left">
							<img alt="Creative Commons License" border="0" src="somerights20.png" height="31" width="88"/>
						</td>
						<td style="font-size : small ; line-height : 120% ; " valign="middle" align="left">
							<p>This work is licensed under a Creative Commons<br/>Attribution-NonCommercial-ShareAlike 2.5 License.</p>
						</td>
					</tr>
				</table>
			</a>
		</slide>
		<class>
        </class>
	</layout>
	<style type="text/css" src="xslidy-spring08.css"/>
	<index name="index.html">
		<category element="xml" class="xml"/>
		<category element="elem" class="xml elem"/>
		<category element="cssp" class="css"/>
		<category element="csss" class="css"/>
		<category element="css" class="css"/>
		<category element="xpathf" class="xpath"/>
		<category element="xpath" class="xpath"/>
		<category element="xslte" class="xslt elem"/>
		<category element="xslta" class="xslt"/>
		<category element="xslt" class="xslt"/>
		<category element="xq" class="xq"/>
		<category element="xsde" class="xsd elem"/>
		<category element="xsda" class="xsd"/>
		<category element="xsda" class="xsd"/>
		<category element="xsd" class="xsd"/>
		<category element="xlink" class="xlink"/>
		<category element="mime" class="mime"/>
		<category element="http" class="http"/>
		<category element="atom" class="atom"/>
	</index>
	<toc name="toc.html">
		<table rules="all" cellspacing="0" cellpadding="5" width="100%">
			<thead>
				<tr>
					<th>Date</th>
					<th>Subject</th>
					<th>Slides</th>
					<th>Resources</th>
				</tr>
			</thead>
			<tbody>
				<xslidy:for-each-presentation>
					<tr>
						<td align="right" valign="top"><xslidy:date/></td>
						<td><xslidy:if-toc class="author"><span class="guest"><xslidy:toc class="author"/></span></xslidy:if-toc><b><xslidy:title/><span class="toggle">:</span></b> <span class="toggle"><span class="abstract"><xslidy:toc class="abstract"/></span></span></td>
						<td align="center"><xslidy:presentation-link title="Lecture Slides"><xslidy:title form="short"/></xslidy:presentation-link> <xslidy:slides>(*&#160;Slides)</xslidy:slides></td>
						<td><xslidy:toc class="resources"/></td>
					</tr>
				</xslidy:for-each-presentation>
			</tbody>
		</table>
	</toc>
    <toc name="290-4.xml">
		<course xmlns="urn:publicid:IDN+www.sims.berkeley.edu:schema:syllabusapp:syllabus:200404:en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:publicid:IDN+www.sims.berkeley.edu:schema:syllabusapp:syllabus:200404:en syllabus_schema.xsd">
			<generalInformation>
				<title>Web-Based Services</title>
				<units>3</units>
				<website>http://dret.net/lectures/services-spring08/</website>
				<departmentListing>
					<name>SIMS</name>
					<code>INFO</code>
					<courseNumber>290-4</courseNumber>
				</departmentListing>
				<schedule>
					<year>2006</year>
					<semester>F</semester>
					<startDate>2008-01-22</startDate>
					<endDate>2008-05-06</endDate>
				</schedule>
				<teachingTeam>
					<teacher>
						<typeCode>Professor</typeCode>
						<initials>EW</initials>
						<name>
							<givenName>Erik</givenName>
							<familyName>Wilde</familyName>
						</name>
						<contact>
							<email>dret@berkeley.edu</email>
							<phone>
								<type>Office</type>
								<number>+1-510-6432253</number>
							</phone>
							<website>http://dret.net/netdret/</website>
						</contact>
					</teacher>
				</teachingTeam>
				<gradingOptionCode>LG</gradingOptionCode>
				<description>
					<p>Web-Based Services are services which provide access to information resources based on Web technologies. Web-based services are an ideal platform on which <em>Web-Based Publishing</em> can build, using the information resource access to provide interfaces for various platforms. The more common term <em>Web Services</em> is often used for the rather restricted set of technologies based on WSDL, SOAP and UDDI. This course focuses on a less middleware-oriented approach to Web-based services, and instead focuses on foundations such as the <em>Hypertext Transfer Protocol (HTTP)</em> for communications and <em>Representational State Transfer (REST)</em> as the architectural principle. The goal of this course is to look at Web-based services with a truly Web-like perspective, emphasizing simple and accessible technologies.</p>
				</description>
			</generalInformation>
			<syllabus>
				<instructionFormatCode>LEC</instructionFormatCode>
				<dayPattern>
					<dayTime>
						<dayOfWeek>Tu</dayOfWeek>
						<timeSpan>
							<startTime>08:30:00</startTime>
							<endTime>10:30:00</endTime>
						</timeSpan>
					</dayTime>
				</dayPattern>
				<location>202 South Hall</location>
				<classes>
					<xslidy:for-each-presentation>
						<class>
							<title><xslidy:title/></title>
							<date><xslidy:date form="short"/></date>
							<xslidy:if-toc class="abstract"><description><xslidy:toc class="abstract"/></description></xslidy:if-toc>
							<resourceList>
								<resource>
									<title>Lecture Notes</title>
									<url><xslidy:presentation-link element="" prefix="http://dret.net/lectures/services-fall06/"/></url>
								</resource>
								<xslidy:if-toc class="resources"><resource><comment><xslidy:toc class="resources"/></comment></resource></xslidy:if-toc>
							</resourceList>
						</class>
					</xslidy:for-each-presentation>
				</classes>
			</syllabus>
			<updated>
				<updateDate>2008-01-01</updateDate>
				<updateBy>dret</updateBy>
			</updated>
		</course>
    </toc>
    <presentation id="intro">
        <title>Introduction</title>
        <date>2008-01-22</date>
        <toc class="resources"><a href="../xml-fall07/" title="XML Foundations Course Fall 2007">XML</a>&#160;·  <a href="../web-fall07/" title="Web Architecture Course Fall 2006">Web</a></toc>
        <toc class="abstract">Web-Based Services are services which provide access to information resources based on Web technologies. Web-based services are an ideal platform on which <em><a href="../publishing-spring08">Web-Based Publishing</a></em> can build, using the information resource access to provide interfaces for various platforms. The more common term <em>Web Services</em> is often used for the rather restricted set of technologies based on WSDL, SOAP and UDDI. This course focuses on a less middleware-oriented approach to Web-based services, and instead focuses on foundations such as the <em>Hypertext Transfer Protocol (HTTP)</em> for communications and <em>Representational State Transfer (REST)</em> as the architectural principle. The goal of this course is to look at Web-based services with a truly Web-like perspective, emphasizing simple and accessible technologies.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<part>
			<title>Course Format</title>
			<slide>
				<title>Projects, Projects, Projects</title>
				<ul>
					<li>Projects in the fields <link href="field-location"/>, <link href="field-linked-data"/>, and <link href="field-feeds"/></li>
					<li>Regular meeting time reserved for project work</li>
					<ul>
						<li>presentations about related work (research, projects, products)</li>
						<li>presentations about project plans and issues</li>
						<li>discussion of project plans and issues</li>
					</ul>
					<li>One fixed meeting slot per group per week</li>
					<ul>
						<li>discussion of project plans and issues</li>
						<li>assignment of presentations</li>
					</ul>
					<li>Overall workload should be 6-8h per week</li>
				</ul>
			</slide>
			<slide>
				<title>Course Results</title>
				<ul>
					<li>Final <link href="presentations"/></li>
					<ul>
						<li>presentations which briefly present the project results</li>
						<li>reports which describe the project and its results in greater detail</li>
					</ul>
					<li>Grade is based on:</li>
					<ul>
						<li>30% presentations during the semester</li>
						<li>30% final project presentation &amp; report</li>
						<li>40% project results</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-location">
				<title>Location</title>
				<ul>
					<li><em>Place Markup Language (PlaceML)</em> for describing locations</li>
					<ul>
						<li>places can be described geographically (coordinates)</li>
						<li>places can be described with metadata (descriptions)</li>
						<li>place descriptions can be structured</li>
					</ul>
					<li>What services can use place descriptions, and how?</li>
					<ul>
						<li>meeting services (alert me when friends are nearby)</li>
						<li>location annotations (leave messages at places)</li>
					</ul>
					<li>Some of these services don't even need locations</li>
					<ul>
						<li>if users share a <em>location vocabulary</em>, they know where a place is</li>
						<li>the evolution of places from coordinates to social constructs</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-linked-data">
				<title>Linked Data</title>
				<ul>
					<li>Data linking on the Web is rudimentary</li>
					<ul>
						<li>HTML has some primitive support in the document head</li>
						<li>microformats describe special-purpose links (e.g., to a license)</li>
					</ul>
					<li>The <em>Semantic Web</em> has stifled the development of the <q>plain Web</q></li>
					<ul>
						<li>anything that can be done on the Web can be done on the Semantic Web</li>
						<li>adoption is still non-existent outside of closed communities</li>
					</ul>
					<li>Links are good, following links is good</li>
					<ul>
						<li><em>XLink</em> is the Web's generalized linking language</li>
						<li>XLink is badly designed, underspecified, and unpopular</li>
						<li>a new link format must be accompanied by an access protocol</li>
					</ul>
				</ul>
			</slide>
			<slide id="field-feeds">
				<title>Feed Technology</title>
				<ul>
					<li>Feeds are widely used to publish and reuse itemized information</li>
					<li>RSS and Atom provide formats for publishing feeds</li>
					<li>AtomPub is a format for providing write access to a feed</li>
					<li>Mapping itemized services to AtomPub is useful</li>
					<ul>
						<li>existing protocol with interactions for remote management</li>
						<li>easy reuse of deployed technologies such as Podcasts</li>
					</ul>
					<li><a href="http://www.archive.org/">Internet Archive</a> currently has idiosyncratic upload support</li>
					<ul>
						<li><code>rsync</code> for syncing complete file systems</li>
						<li>FTP for uploading items in a one-by-one process</li>
						<li>HTML form for upload which also only allows one-by-one upload</li>
					</ul>
				</ul>
			</slide>
		</part>
        <part id="app-architecture">
			<title>Application Architecture</title>
			<slide>
				<title>Resources, REST, UI</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-tiers.png" title="Web Application Tiers"/>
			</slide>
			<slide>
				<title>Multiple UIs</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-multiple-ui.png" title="Web Application with Multiple UIs"/>
			</slide>
			<slide>
				<title>Mash-Ups</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-mashup.png" title="Mash-Up"/>
			</slide>
			<slide>
				<title>Mash-Apps</title>
				<img style="width : 88% ; margin : 4% ; " src="web-app-mashapp.png" title="Mash-App"/>
			</slide>
			<slide>
				<title>Web-Based Application</title>
				<ul>
					<li>Applications should ship data, not code</li>
					<ul>
						<li>REST-based back-ends can support any kind of interface</li>
						<li>shipping code is very client-specific and should be avoided</li>
					</ul>
					<li>Applications should focus on the service perspective</li>
					<ul>
						<li>how to deliver a service that can be easily used by others</li>
						<li>how to describe the service's data model for potential users</li>
						<li>how to control access and authenticate service users</li>
					</ul>
					<li>If possible, other services should be integrated</li>
					<ul>
						<li>if you need authentication, why not use <a href="http://openid.net/">OpenID</a>?</li>
						<li>if you need social networking, why not use <a href="http://code.google.com/apis/opensocial/">OpenSocial</a>?</li>
						<li>if you need location, why not use <a href="http://fireeagle.research.yahoo.com/">Fireeagle</a>?</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Rich Internet Application (RIA)</title>
				<ul>
					<li><em>Rich Internet Applications</em> are based on the idea of a smarter client</li>
					<ul>
						<li>Ajax applications ship JavaScript code for modern browsers</li>
						<li>Flash applications ship ActionScript code for flash players</li>
						<li>ActiveX applications ship Windows components for IE</li>
					</ul>
					<li>RIAs should be built on top of a RESTful service</li>
					<ul>
						<li>standard services will provide XML-based interactions</li>
						<li>Ajax-specific services may provide JSON representations</li>
					</ul>
					<li>Service and RIA should be completely separated</li>
					<ul>
						<li>if required, the service can be provided as an API</li>
						<li>if required, alternative UIs (e.g., purely Web-based) can be implemented</li>
					</ul>
				</ul>
			</slide>
        </part>
		<part>
			<title>Varia</title>
			<slide>
				<title>About Me</title>
				<ul>
					<li>Computer Science at <a href="http://www.tu-berlin.de/eng/">Technical University of Berlin (TUB)</a> (88-91)</li>
					<li>Ph.D. at <a href="http://www.ethz.ch/index_EN">ETH Zürich</a> (92-97)</li>
					<li>Post-Doc at <a href="http://www.icsi.berkeley.edu/">ICSI, Berkeley</a> (97/98)</li>
					<ul>
						<li>book on <q><a href="http://dret.net/netdret/publications#wil98">Technical Foundations of the World Wide Web</a></q>
						</li>
					</ul>
					<li>Various activities back in Switzerland (98-06)</li>
					<ul>
						<li>teaching at <a href="http://www.ethz.ch/index_EN">ETH Zürich</a> and <a href="http://www.fhnw.ch/">FHNW</a></li>
						<li>working as independent consultant (training, courses, consulting)</li>
						<li>research in <a href="http://dret.net/projects/">various XML-related areas</a></li>
					</ul>
					<li>Visiting Assistant Professor at the <a href="http://ischool.berkeley.edu/">School of Information</a> (since fall 2006)</li>
					<ul>
						<li><a href="../web-fall07">Web</a> and <a href="../xml-fall07">XML</a> courses in fall 2007</li>
						<li>technical director of the <a href="http://isd.ischool.berkeley.edu/">Information and Service Design (ISD) program</a></li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>About this Course</title>
				<ul>
					<li>Course Web page: <code><a href="./">http://dret.net/lectures/services-spring08/</a></code></li>
					<li>Course mailing list: subscribe at <code><a href="mailto:majordomo@ischool.berkeley.edu">majordomo@ischool.berkeley.edu</a></code></li>
					<ul>
						<li>no subject (leave blank)</li>
						<li>body of message: <code>subscribe wbs</code></li>
					</ul>
					<li>Letter grade based on presentations and course project (results and presentation)</li>
				</ul>
			</slide>
			<slide>
				<title>About these Slides</title>
					<ul>
						<li>Generated from <a href="http://dret.net/projects/xslidy/">XSLidy</a> <a href="./services-spring08.xml">XML</a></li>
						<li>Designed for online presentation and use (lots of links!)</li>
						<ul>
							<li>for printing, use <q>a</q> (all slides), and then <q>s</q> (smaller font) a couple of times</li>
						</ul>
						<li>A good real-world example for Web-based publishing</li>
						<ul>
							<li>Slidy is useful, but there is no support for structures and hyperlinking</li>
							<li>XSLidy adds these features by adding an XSLT transformation</li>
							<li>XSLidy is useful, but there is no interface (XML editing only)</li>
						</ul>
					</ul>
			</slide>
			<slide>
				<title>Additional Resources</title>
				<ul>
					<li>My <a href="http://dret.net/glossary/">Online Glossary at <code>http://dret.net/glossary/</code></a></li>
					<ul>
						<li>suggestions, updates, corrections are very welcome (really!)</li>
						<li>another exercise in how to use XML and XSLT for information management</li>
					</ul>
					<li>My <a href="http://dret.net/biblio/">bibliography at <code>http://dret.net/biblio/</code></a></li>
					<ul>
						<li>suggestions, updates, corrections are very welcome (really!)</li>
						<li>produced by an XML-centric system for managing bibliography data</li>
					</ul>
					<li>The <a href="http://www.w3.org/"><em>World Wide Web Consortium (W3C)</em></a></li>
					<ul>
						<li>headed by <em href="http://www.w3.org/People/Berners-Lee/">Tim-Berners Lee</em>, inventor of the Web (with <a href="http://en.wikipedia.org/wiki/Robert_Cailliau">Robert Cailliau</a>)</li>
					</ul>
					<li>The <a href="http://www.ietf.org/"><em>Internet Engineering Task Force (IETF)</em></a></li>
					<ul>
						<li>mainly Internet standards, but also responsible for URIs and HTTP</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part>
			<title>Conclusions</title>
			<slide>
				<title>Projects!</title>
				<ul>
					<li>Create a project description until next week</li>
					<ol>
						<li>context, goals, and non-goals of the project</li>
						<li>deliverables in one-month phases (i.e., 3 phases)</li>
						<li>your project will be graded based on these goals!</li>
					</ol>
					<li>Next week we will discuss and assign projects</li>
					<li>If you don't have a project idea, just ask me …</li>
				</ul>
			</slide>
		</part>
    </presentation>
    <presentation id="projects">
        <title>Projects</title>
        <date>2008-01-29</date>
        <toc class="abstract">Projects are being assigned this week. The three project areas are <em>Location</em>, <em>Linked Data</em>, and <em>Feed Technology</em>. Each of these areas has data model and service components. In all project areas this week is dedicated to learning more about the project environment, and existing technologies and approaches. This week's work will allow students to give initial presentations about their project next week, serving as a starting point for further work and possible collaborations among projects.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<part>
			<title>Location</title>
			<slide>
				<title>Individual Locations</title>
				<img style="height : 75% ; margin : 2% ; " src="uc-berkeley-campuses.png" href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=116962062413210327627.00043de7109aff5329452" title="UC Berkeley Campus Locations"/>
			</slide>
			<slide>
				<title>Social Places</title>
				<ul>
					<li>Locations and location-based services are popular themes</li>
					<li>Most applications are based on <q>closed</q> scenarios</li>
					<ul>
						<li>location information is made available only to special providers (mobile scenario)</li>
						<li>location information is only usable within one silo</li>
					</ul>
					<li>Tasks for first week:</li>
					<ul>
						<li>develop scenarios for sharing location information across services</li>
						<li>how good is <a href="http://fireeagle.research.yahoo.com/">Fire Eagle</a> for this? (centralized)</li>
						<li>start collecting map URIs as a test dataset for mapping map URIs</li>
					</ul>
					<li>Next tuesday:</li>
					<ul>
						<li>present the PlaceML data model and possible services around it</li>
						<li>present some first ideas about location services and social networking</li>
					</ul>
					<li>Next goals:</li>
					<ul>
						<li>Services for locations and places without being restricted to geolocation</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Map Mapper Map (Read)</title>
				<listing src="mapmap-155.xml" line="31-43"/>
			</slide>
			<slide>
				<title>Map Mapper Map (Write)</title>
				<listing src="mapmap-155.xml" line="70-85"/>
			</slide>
			<slide>
				<title>Map Services</title>
				<ul>
					<li>Map services support map bookmarks by using <q>URI UIs</q></li>
					<li>What about using these as <q>URI APIs</q>?</li>
					<li>There is no standard for map URIs</li>
					<ul>
						<li>there is a pretty small common set of parameters for controlling a map</li>
						<li>creating a <em>data model</em> for these parameters formalizes the <q>API</q></li>
					</ul>
					<li>Tasks for first week:</li>
					<ul>
						<li>take the existing Map Mapper Map and add new map services</li>
						<li>maybe add new parameters to the data model (if required)</li>
						<li>maybe improve the mapping process to be more flexible and powerful</li>
					</ul>
					<li>Next tuesday:</li>
					<ul>
						<li>present the updated map and its model</li>
						<li>point to challenges and problems which need to be solved</li>
					</ul>
					<li>Next goals:</li>
					<ul>
						<li>collecting enough URIs and services to define a robust mapping scheme</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part>
			<title>Linked Data</title>
			<slide id="compound-documents">
				<title>Compound Documents</title>
				<ul>
					<li>Many <q>resources</q> on the Web are actually <em>compound resources</em></li>
					<li>HTML has rudimentary support for expressing resource relationships</li>
					<ul>
						<li>some connections are explicit (<elem>img</elem>, <elem>object</elem>, CSS URIs …)</li>
						<li>others are implicit and require understanding (<elem>a</elem>)</li>
						<li>many are hidden deep in scripting code and maybe even dynamically loaded data (Ajax)</li>
						<li><elem>link</elem> sometimes helps but is not very popular</li>
					</ul>
					<li>Various vocabularies have been developed to represent links</li>
					<ul>
						<li>XLink, METS, DIDL, OAI-ORE, …</li>
						<li>so far, none of these has been successful on the Web</li>
					</ul>
					<li>Tasks for this week:</li>
					<ul>
						<li>compile a complete dictionary of all HTML linking constructs</li>
						<li>work on a list of issues which are hard or impossible to solve</li>
					</ul>
					<li>Next tuesday:</li>
					<ul>
						<li>present all ways in which HTML &amp; CSS connect resources</li>
						<li>present a first rough outline of an algorithm for identifying compound resources</li>
					</ul>
					<li>Next goals:</li>
					<ul>
						<li>tweak the algorithm to be configurable so that it can be customized as a harvester</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Accessing Link Data</title>
				<ul>
					<li>Links (such as information about <link href="compound-documents"/>) are discrete resources</li>
					<li>Atom and AtomPub have been designed to manage collections</li>
					<li>Instead of just serving <em>content</em>, a <q>link feed</q> could serve <em>context</em></li>
					<li>Tasks for this week:</li>
					<ul>
						<li>read <a href="http://bitworking.org/projects/atom/rfc5023.html">AtomPub</a> and look at the <a href="http://dret.typepad.com/dretblog/atom-landscape.html">Atom landscape</a></li>
						<li>think about how AtomPub could be extended to be <a href="http://www.imc.org/atom-protocol/mail-archive/msg10632.html">timeless</a></li>
					</ul>
					<li>Next tuesday:</li>
					<ul>
						<li>brief presentation of the issues with AtomPub in this scenarios</li>
						<li>making the connection between <link href="compound-documents"/> and <q>link feeds</q></li>
					</ul>
					<li>Next goals:</li>
					<ul>
						<li>more research in AtomPub extensibility</li>
					</ul>
				</ul>
			</slide>
		</part>
		<part>
			<title>Feed Technology</title>
			<slide>
				<title>Internet Archive</title>
				<ul>
					<li>Archiving of (more or less) any kind of data</li>
					<ul>
						<li><code>rsync</code> for syncing complete file systems</li>
						<li>FTP for uploading items in a one-by-one process</li>
						<li>HTML form for upload which also only allows one-by-one upload</li>
					</ul>
					<li>Tasks for the first week:</li>
					<ul>
						<li>inventory of currently supported interactions for <em>content providers</em></li>
						<li>inventory of currently supported interactions for <em>content consumers</em></li>
						<li>start work on lists of possible improvements (focusing on content, not UI)</li>
						<li>read <a href="http://bitworking.org/projects/atom/rfc5023.html">AtomPub</a> and look at the <a href="http://dret.typepad.com/dretblog/atom-landscape.html">Atom landscape</a></li>
					</ul>
					<li>Next tuesday:</li>
					<ul>
						<li>presentation of data flows in and out of the Internet Archive</li>
						<li>brief overlook of how Atom and AtomPub fit into that picture</li>
					</ul>
					<li>Next goals:</li>
					<ul>
						<li>would it be possible to build a <code href="http://www.tbray.org/ongoing/When/200x/2007/06/25/mod_atom">mod_atom</code> interface for the archive?</li>
					</ul>
			</ul>
			</slide>
		</part>
		<part>
			<title>Conclusions</title>
			<slide>
				<title>Exploration</title>
				<ul>
					<li>Introductory reading and some first experiments</li>
					<li>Your (last) chance to choose the direction in which you are going</li>
					<li>My goals and interests are not necessarily yours …</li>
				</ul>
			</slide>
		</part>
	</presentation>
    <presentation id="mantis">
        <title>Mantis</title>
        <date>2008-02-05</date>
        <toc class="abstract">This week has a short introduction to <em>Mantis</em>, the issue tracking system that will be used for the course projects. Following this brief introduction, course projects will be discussed.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<part id="mantis">
			<title>Mantis</title>
			<slide>
				<title>Issue Tracking</title>
				<ul>
					<li>Often used as a <em>bug tracking system</em> for software development</li>
					<li>Issues are anything which needs resolution</li>
					<ul>
						<li>bugs in an existing implementation</li>
						<li>requests for a <em>feature</em> which should be added</li>
						<li>ideas for <em>future features</em> which should be captured</li>
					</ul>
					<li>Issue tracking is not chatting</li>
					<ul>
						<li>please do not have conversations using the system</li>
						<li>each issue and each note should have substance to it</li>
					</ul>
					<li>Try to resolve issues to the point where they can be <em>closed</em></li>
				</ul>
			</slide>
			<slide>
				<title>Mantis Structure</title>
				<ul>
					<li>Users get a login and have access to the application</li>
					<li>Each installation can have multiple <em>projects</em></li>
					<ul>
						<li>users have access to the projects which are public or open to them</li>
					</ul>
					<li>Each project has a list of <em>issues</em></li>
					<ul>
						<li>the <em>category</em> describes which part of a project an issue is for</li>
						<li>the <em>severity</em> describes how important the issue is</li>
						<li>the <em>status</em> tracks an issue through its lifecycle (until it is <em>closed</em>)</li>
					</ul>
					<li><em>Categories</em> identify well-defined parts of a project</li>
					<ul>
						<li>issues entered for a category are assigned to a default user</li>
						<li>issue assignment can be changed manually at any time</li>
					</ul>
					<li>Adding <em>notes</em> to an issue can be done in two ways</li>
					<ul>
						<li>just adding a note without changing its status</li>
						<li>changing its status and then adding the note which describes the status change</li>
					</ul>
					<li>Issues can be <em>monitored</em> to get emails about activities</li>
				</ul>
			</slide>
		</part>
	</presentation>
    <presentation id="atom">
        <title short="Atom">Atom Syndication Format</title>
        <date>2008-02-26</date>
        <toc class="reading"><a href="http://www.xml.com/pub/a/2004/08/18/pilgrim.html">Identifying Atom</a></toc>
        <toc class="resources"><a href="http://atompub.org/rfc4287.html" title="Atom RFC">Spec</a>&#160;· <a href="http://validator.w3.org/feed/" title="W3C RSS/Atom Feed Validator">Validator</a>&#160;· <a href="http://dret.typepad.com/dretblog/atom-landscape.html" title="Atom Landscape Overview">Atom&#160;Landscape</a></toc>
        <toc class="abstract">For many information sources on the Web, it is useful to have some standardized way of subscribing to information updates. Syndication formats such as  <em>RSS</em> and <em>Atom</em> can be used by these information sources to publish a <em>feed</em> of updated information items. The basic syndication mechanism describes a data format for publishing entry metadata and entries. In addition to the basic format, services might also support additional functionality, such as the ability to indicate that clients may page through a feed, if it contains more entries than published on the first page.</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
		<slide>
			<title>Content Feeds</title>
			<ul>
				<li>Early Web content was static or updated very infrequently</li>
				<ul>
					<li>there was not yet the requirement to reuse content in different contexts</li>
				</ul>
				<li>Frequently updated Web content quickly became a very common scenario</li>
				<ul>
					<li>as commercial interests took over, users should have a reason to re-visit a site</li>
					<li>presenting a steady stream of new content creates the image of a live Web site</li>
				</ul>
				<li>There are two major use cases where HTML is not sufficient</li>
				<ol>
					<li>users want an efficient way to get the updated content from a site</li>
					<li>sites want to aggregate updated content from other sites and re-publish it</li>
				</ol>
				<li><link href="syndication-formats"/> are designed to support these two use cases</li>
				<ul>
					<li>container formats for updated items</li>
					<li>a small amount of metadata about these items for automated processing</li>
				</ul>
			</ul>
		</slide>
		<part id="syndication-formats">
			<title>Syndication Formats</title>
			<part id="rss">
				<title>RSS</title>
				<slide id="rss-versions">
					<title>RSS History</title>
					<ul>
						<li><q><a href="http://diveintomark.org/archives/2004/02/04/incompatible-rss">The Myth of RSS Compatibility</a></q> provides a good overview</li>
						<li>RSS is a schoolbook example for <q>why standards are a good thing</q></li>
						<ul>
							<li><link href="rss09x"/> was created for the <em>My Netscape</em> portal in March 1999</li>
							<li>RSS 0.91 (a simplification) was introduced in July 1999 (as an interim solution)</li>
							<li>the AOL/Netscape merger removed the format from the company's portal</li>
							<li>RSS was without an owner, and different parties claimed/denied ownership</li>
							<li><link href="rss10"/> was created by an informal developer group</li>
							<li>RSS 0.92 (and 0.93 and 0.94) were published without acknowledging RSS 1.0</li>
							<li>finally, <link href="rss20"/> was released as a follow-up to the RSS 0.9x versions</li>
						</ul>
						<li>Using RSS has become an exercise in managing a menagerie of versions</li>
					</ul>
				</slide>
				<slide id="rss09x">
					<title>RSS 0.9x</title>
					<ul>
						<li>RSS means <em>RDF Site Summary</em> (or <em>Rich Site Summary</em>?)</li>
						<ul>
							<li>based on an RDF draft and not compatible with the final RDF specification</li>
							<li>RDF was considered too cumbersome and unstable</li>
							<li>0.90 (proto-RDF) was quickly replaced by the non-RDF 0.91 version</li>
						</ul>
						<li>RSS 0.92+ versions were developed as unilateral specifications</li>
						<ul>
							<li>starting with RSS 0.91, RSS means <em>Rich Site Summary</em></li>
							<li>it is no longer built on RDF, instead it simply uses XML</li>
							<li>the 0.9x branch eventually was renamed to <link href="rss20"/></li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>RSS 0.91 Example</title>
					<listing src="rss091.xml" line="2-12" href="http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html"/>
				</slide>
				<slide id="rss10">
					<title>RSS 1.0</title>
					<ul>
						<li>RSS means <em>RDF Site Summary</em> (this time for real)</li>
						<ul>
							<li>based on the final RDF specification and thus incompatible with any <link href="rss09x"/></li>
							<li>developed when the Semantic Web and RDF were first heavily marketed (<a href="http://dret.net/biblio/reference/lee99" title='Tim Berners-Lee, Mark Fischetti, Michael Dertouzos, "Weaving the Web", HarperCollins, 1999'>1999</a>)</li>
							<li>RDF was expected to become the format for metadata on the Web</li>
						</ul>
						<li>RSS 1.0 makes heavy use of XML Namespaces</li>
						<li>RSS 1.0 introduces features which were not present in 0.91</li>
						<ul>
							<li>date information for published items (very relevant for news feeds)</li>
							<li>individual authors for various items in a feed</li>
						</ul>
						<li>RSS 1.0 is the latest version of RDF-based RSS</li>
						<ul>
							<li>the Semantic Web wave is not over yet, but RDF has lost its novelty appeal</li>
							<li>for a more XML-oriented encoding, <link href="rss09x"/> provides a better foundation</li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>RSS 1.0 Example</title>
					<listing src="rss10.xml" line="2-22" href="http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html"/>
				</slide>
				<slide id="rss20">
					<title>RSS 2.0</title>
					<ul>
						<li>RSS now means <em>Really Simple Syndication</em></li>
						<ul>
							<li>RSS 2.0 is the continuation of the 0.91 branch (which dropped RDF)</li>
							<li>together with <link href="rss10"/> it is the most popular version of RSS</li>
							<li>migration from 0.91 to 2.0 is easily possible</li>
						</ul>
						<li>RSS 2.0 tries to avoid the use of XML Namespaces</li>
						<li>RSS 2.0 is <a href="http://rss-extensions.org/wiki/Main_Page">increasingly used with extensions</a> for vendor-specific information</li>
						<ul>
							<li>the RSS core is minimal, so many applications need extensions</li>
							<li>many extensions have overlapping functionality</li>
							<li>most extensions have unclear semantics and unclear versioning policies</li>
							<li><a href="http://www.apple.com/itunes/store/podcaststechspecs.html" title="Apple iTunes Podcast Guide">Apple's <q>podcasts</q></a> are probably among the most popular extensions</li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>RSS 2.0 Example</title>
					<listing src="rss20.xml" line="2-14" href="http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html"/>
				</slide>
				<slide>
					<title>The Case for Content Management</title>
					<ul>
						<li>RSS is rarely produced by hand</li>
						<ul>
							<li>by definition, RSS contains redundant information for a specific purpose</li>
						</ul>
						<li>If a <em>Content Management System (CMS)</em> is used, RSS can be generated</li>
						<ul>
							<li>basic metadata can be generated by the CMS (title, author, date)</li>
							<li>better tagging of content results in better tagging of feeds</li>
							<li>well-tagged feeds are better foundations for large-scale reuse of feed items</li>
						</ul>
						<li>Blogging is simply a specialized case of a CMS</li>
						<ul>
							<li>Web-based interface for controlling everything</li>
							<li>strictly time-ordered sequenced of published items</li>
							<li>navigation features primarily based on the time-specific facets of the blog (maybe tags)</li>
							<li>all blogging tools include feed support</li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>Consuming RSS</title>
					<ul>
						<li>RSS feeds often have quality problems</li>
						<ul>
							<li>surprisingly often feeds do not even deliver well-formed XML</li>
							<li>the use of embedded markup in RSS is not well-defined</li>
						</ul>
						<li>Writing an RSS reader from scratch is not a good idea</li>
						<li>There are three major tasks which RSS readers must do</li>
						<ol>
							<li>accept non-XML RSS feeds and fix them to be XML</li>
							<li>look at the feed contents and bring them into a unified form</li>
							<li>produce a unified view of feeds regardless of the RSS version</li>
						</ol>
					</ul>
				</slide>
				<slide>
					<title>RSS Technical Problems</title>
					<ul>
						<li>What to put into an item's description</li>
						<ul>
							<li>the fundamental question is whether a description is text or HTML</li>
							<li>HTML is often used in a non-XML way (omitted end-tags)</li>
							<li>interpretation is client-specific if there is no well-defined indication</li>
							<pre>&lt;description>This is a post&lt;br>on two lines&lt;/description></pre>
							<pre>&lt;description>This is a post&amp;lt;br>on two lines&lt;/description></pre>
							<pre>&lt;description>This is a post about &lt;br> in RSS feeds&lt;/description></pre>
							<pre>&lt;description>This is a post about &amp;lt;br> in RSS feeds&lt;/description></pre>
							<pre>&lt;description>This is a post about &amp;amp;lt;br> in RSS feeds&lt;/description></pre>
						</ul>
						<li>Underspecified and not very robust in various other areas</li>
						<ul>
							<li>broken RSS is accepted by most readers (and fixing it can change the interpretation)</li>
							<li>the interpretation of relative URIs is not mentioned in the specifications</li>
							<li>some minimal semantics (classification) for items would be very useful</li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>RSS Political Problems</title>
					<ul>
						<li>Multiple and incompatible <link href="rss-versions">RSS versions</link> are still in widespread use</li>
						<ul>
							<li><link href="rss10"/> and <link href="rss20"/> are <q>incompatible by design</q> (RDF vs. non-RDF)</li>
						</ul>
						<li>None of the specifications is being updated or fixed</li>
						<ul>
							<li>none of the RSS versions is maintained by a universally accepted standards body</li>
							<li>some of the lessons learned by RSS deployment are not used in a new version</li>
							<li>it is unlikely that a new version will be produced which merges the RSS landscape</li>
						</ul>
						<li>Invent something new instead of trying to fix RSS</li>
						<ul>
							<li><link href="atom">Atom</link> started in 2003 (called <em>Echo</em> at first)</li>
							<li>W3C or IETF would have been promising candidates for a <q>new RSS</q></li>
							<li>W3C is more formal, IETF is more developer-centered</li>
							<li><a href="http://www.bestkungfu.com/?p=492">IETF was chosen over W3C</a> because the of Atom community's preferences</li>
						</ul>
					</ul>
				</slide>
			</part>
			<part>
				<title>Atom</title>
				<slide>
					<title>Atom History</title>
					<img src="atom-logo.png" href="http://atompub.org/" style="float : right ; margin-top : 0.5em ; margin-right : 2em ; "/>
					<ul>
						<li>RSS's shortcomings were very apparent and could not be fixed</li>
						<li>In mid-2003, discussions started about an improved format</li>
						<li>It also became apparent that the format should have a protocol</li>
						<li>Atom 0.3 was released in December 2003 but had no formal home</li>
						<li>IETF was chosen as the new home with a working group in June 2004</li>
						<li><a href="http://dret.net/rfc-index/reference/RFC4287">RFC 4287 (Atom)</a> was published in December 2005</li>
						<li><a href="../publishing-spring08/atompub">AtomPub</a> has been published as <a href="http://dret.net/rfc-index/reference/RFC5023">RFC 5023</a> in October 2007</li>
					</ul>
				</slide>
				<slide>
					<title>Atom vs. RSS</title>
					<ul>
						<li>Standardized by the IETF (well-defined process)</li>
						<li>Classification of entries (user-defined categories)</li>
						<li>More XML-like markup design (more nesting)</li>
						<li>Namespaces are used and supported as standard mechanism</li>
						<li>Atom feeds <em>must</em> be well-formed XML (there even <a href="http://atompub.org/2005/08/17/atom.rnc" title="Atom RELAX NG Schema">is a schema</a>)</li>
						<li>Interpretation of content is well-defined (various content types)</li>
						<li>Support for <code>xml:lang</code> and <code>xml:base</code></li>
					</ul>
				</slide>
				<slide>
					<title>Atom Example</title>
					<listing src="atom.xml"/>
				</slide>
				<slide>
					<title>Atom Data Model</title>
					<img src="atom-data-model.png" style="height : 72% ; margin : 2% ; " title="Atom Data Model"/>
				</slide>
				<slide>
					<title>Atom Content</title>
					<ul>
						<li>RSS had no well-defined way of finding out what an entry's content is</li>
						<ul>
							<li>implementations use <q>smart ways</q> to figure out what the RSS author really wanted</li>
							<li>one of Atom's main goals was to improve this in a well-defined way</li>
							<li>Atom allows escaped markup (the only way to include non-XML HTML in an XML format)</li>
						</ul>
						<li>Each <elem>content</elem> element should have a <atom>type</atom> (the default is <code>text</code>)</li>
						<li>Atom's content interpretation algorithm (use first applicable rule):</li>
						<ol>
							<li>if <atom>type</atom> is <code>text</code>, no child elements are allowed (plain text content)</li>
							<li>if <atom>type</atom> is <code>html</code> then RSS's method of escaped markup is used</li>
							<li>if <atom>type</atom> is <code>xhtml</code> then there must be an <elem>div</elem> containing XHTML markup</li>
							<li>if <atom>type</atom> is an XML <a href="../web-fall07/mime">MIME type</a> then the content should be treated as this type</li>
							<li>if <atom>type</atom> starts with <q><code>text/</code></q> then no child elements are allowed</li>
							<li>for all other values, the content must be an base64-encoded entity of the specified MIME type</li>
						</ol>
					</ul>
				</slide>
				<slide>
					<title>Atom Content Examples</title>
					<pre href="http://www.xml.com/lpt/a/1633"><![CDATA[<content type="xhtml">
  <div xmlns="http://www.w3.org/1999/xhtml">
    One <strong>bold</strong> foot forward
  </div>
</content>]]></pre>
					<pre href="http://www.xml.com/lpt/a/1633"><![CDATA[<content>The "atom:content" element either contains or links to the content of the entry. The content of atom:content is Language-Sensitive.</content>]]></pre>
					<pre href="http://www.xml.com/lpt/a/1633"><![CDATA[<content type="html">The &lt;code>atom:content&lt;/code> element either contains or links to the content of the entry. The content of &lt;code>atom:content&lt;/code> is &lt;a href="http://www.ietf.org/rfc/rfc3066.txt">Language-Sensitive&lt;/a>.</content>]]></pre>
					<pre href="http://www.xml.com/lpt/a/1633"><![CDATA[<content type="image/png">
iVBORw0KGgoA … TAAAAAElFTkSuQmCC
</content>]]></pre>
					<pre href="http://www.xml.com/lpt/a/1633"><![CDATA[<content src="image.png" type="image/png"/>]]></pre>
				</slide>
				<slide>
					<title>Atom Categories</title>
					<ul>
						<li>Atom allows to assign categories to entries</li>
						<ul>
							<li>each <elem>category</elem> element must have a <atom>term</atom> attribute for the category</li>
							<li>an optional <atom>scheme</atom> identifies the categorization scheme (by URI)</li>
							<li>an optional <atom>label</atom> attribute provides a human-readable label for the category</li>
						</ul>
						<li><a href="../publishing-spring08/atompub">AtomPub</a> defines a document format for <em>Category Documents</em></li>
						<li>Three different cases of categorization can be distinguished</li>
						<ol>
							<li>use a well-known scheme (such as <em>Dublin Core</em>)</li>
							<li>use a private but well-designed scheme (which has a URI and can be reused reliably)</li>
							<li>use tags without schemes</li>
						</ol>
						<li>Tags <a href="http://www.tbray.org/ongoing/When/200x/2007/02/01/Tag-Scheme">can be handled in different ways</a></li>
						<ul>
							<li>leave the <atom>scheme</atom> empty which indicates that there is no scheme</li>
							<li>use some special <atom>scheme</atom> for referring to a <q>tagging scheme</q></li>
						</ul>
					</ul>
				</slide>
				<slide>
					<title>Switching from RSS to Atom</title>
					<ul>
						<li>Generate both feeds but serve RSS with a HTTP redirect (301)</li>
						<ul>
							<li>old subscribers with broken clients can still use the RSS feed</li>
							<li>old subscribers with correct clients will start using the Atom feed</li>
						</ul>
						<li>Atom exposes more information than RSS (<elem>category</elem> for tags)</li>
						<ul>
							<li>the mapping of publishing info to the feed has to be changed/extended</li>
							<li>for standard metadata use Atom's built-in metadata elements</li>
							<li>for application-specific metadata consider reusing an existing metadata schema</li>
						</ul>
						<li>Atom can be used to publish snippets as well as full content</li>
						<ul>
							<li><elem>content</elem> allows any type of content to be used and may contain a complete entry</li>
							<li><elem>summary</elem> allows only text and should provide a condensed version of an entry</li>
							<li>some Atom sources publish two feeds (full content and some excerpt longer than the summary)</li>
						</ul>
						<li>Generate good Atom and downgrade it to RSS 1.0 &amp; 2.0</li>
					</ul>
				</slide>
			</part>
		</part>
		<part>
			<title>Syndication Aggregation</title>
			<slide>
				<title>End-User Aggregation</title>
				<img src="feed-icon.png" style="float : right ; margin-top : 0.5em ; margin-right : 2em ; "/>
				<ul>
					<li>Users often have a small number of preferred Web sites</li>
					<ul>
						<li>news can be tracked by subscribing to their feeds</li>
						<li>this requires an RSS-aware client (Firefox is not a good RSS reader)</li>
					</ul>
					<li>Ajax-based RSS could be implemented as a client-side application</li>
					<ul>
						<li>retrieve the feed, transform it to HTML, and render the result</li>
						<li>but the security restriction of <code>XMLHttpRequest</code> gets into the way</li>
						<li>there is a way around this as used in the <a href="http://www-128.ibm.com/developerworks/library/x-ajaxrss/" title="IBM developerWorks Article by Jack D. Herrington">Ajax RSS reader</a></li>
					</ul>
					<li>How can users find a feed?</li>
					<ul>
						<li>feeds have URIs (they are Web resources) and can be referenced from within HTML</li>
					</ul>
				</ul>
				<pre>&lt;link rel="alternate" type="application/rdf+xml" title="…" href="…" />
&lt;link rel="alternate" type="application/rss+xml" title="…" href="…" /></pre>
				<pre>&lt;link rel="alternate" type="application/atom+xml" title="…" href="…" /></pre>
			</slide>
			<slide>
				<title>Aggregation Intermediaries</title>
				<div style="float : right ; width : 20% ; margin-right : 1.5em">
					<script type="text/javascript" src="http://www.google.com/reader/ui/publisher.js"></script>
					<script type="text/javascript" src="http://www.google.com/reader/public/javascript/user/16601496766743088901/state/com.google/broadcast?n=5&amp;callback=GRC_p(%7Bc%3A'gray'%2Ct%3A'Shared%20items'%2Cs%3A'true'%7D)%3Bnew%20GRC"></script>
				</div>
				<ul>
					<li>RSS is a frequently used format between content providers</li>
					<ul>
						<li>news agencies want to distribute news items as easy as possible</li>
						<li>by using a single format, producers and consumers can more easily interoperate</li>
					</ul>
					<li>The <link href="rss-versions"/> caused publishers to look for something better</li>
					<ul>
						<li><link href="rss"/> had a head start and still is widely used</li>
						<li><link href="atom">Atom</link> is a much better format and will eventually replace RSS</li>
					</ul>
					<li>User-configured portals are the merger between both scenarios</li>
					<ol>
						<li>users select a number of feeds as their preferred information sources</li>
						<li>the feeds are presented on a <a href="http://www.google.com/reader/view/" title="Google Reader">single personalized Web page</a></li>
						<li>by <a href="http://www.google.com/reader/shared/16601496766743088901" title="dret's Google Reader Shared Items">sharing</a> and <a href="http://www.google.com/reader/public/atom/user/16601496766743088901/state/com.google/broadcast" title="dret's Google Reader Atom Feed">re-publishing</a> items, users are becoming aggregation intermediaries</li>
					</ol>
				</ul>
			</slide>
		</part>
		<part id="atom-extensions">
			<title>Atom Add-Ons</title>
			<slide>
				<title>Extensibility</title>
				<ul>
					<li>Atom's goal is to support the core of syndication metadata</li>
					<li>The Atom feed format is extremely simple</li>
					<ul>
						<li><atom>feed</atom>, <atom>entry</atom>, and <atom>content</atom> are the <a href="http://tools.ietf.org/html/rfc4287#section-4.1">container elements</a></li>
					</ul>
					<li>Atom's <a href="http://tools.ietf.org/html/rfc4287#section-4.2">metadata model</a> is a bit more exhaustive</li>
					<ul>
						<li><atom>author</atom>, <atom>category</atom>, <atom>contributor</atom>, <atom>generator</atom>, <atom>icon</atom>, <atom>id</atom>, <atom>link</atom>, <atom>logo</atom>, <atom>published</atom>, <atom>rights</atom>, <atom>source</atom>, <atom>subtitle</atom>, <atom>summary</atom>, <atom>title</atom>, <atom>updated</atom></li>
					</ul>
					<li>Additional semantics can use <a href="http://tools.ietf.org/html/rfc4287#section-6">Atom's extension model</a></li>
					<ul>
						<li>the challenge is to identify useful units of functionality</li>
						<li>some extensions have already been standardized</li>
					</ul>
					<li>A starting point for searching for extensions is IANA's <a href="http://www.iana.org/assignments/link-relations.html"><q>Atom Link Relations</q> registry</a></li>
				</ul>
			</slide>
			<slide>
				<title>Atom Threading Extensions</title>
				<ul>
					<li>Mailing lists and newsgroups are collections of resources</li>
					<li>Threaded discussions create resource relationships</li>
					<ul>
						<li>resources may be <em>in reply to</em> other resources</li>
						<li><em>replies</em> to a resource may be available elsewhere (maybe in a feed)</li>
						<li>it might be interesting to know the <em>count</em> and <em>updated</em> timestamp of those replies</li>
						<li>it might be interesting to know the <em>total</em> number of replies to an entry</li>
					</ul>
					<li><a href="http://tools.ietf.org/html/rfc4685">RFC 4685</a> defines Atom extensions for threaded discussions</li>
					<li>Reading mailing lists archives with RFC 4685 support is much easier</li>
					<ul>
						<li>it is not necessary to access the complete set of entries</li>
						<li>building an Atom-based reader for news or email is greatly simplified</li>
						<li>the approximations of counts and times is not a serious problem</li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Atom License Extension</title>
				<ul>
					<li><a href="http://tools.ietf.org/html/rfc4287#section-4.2.10">Atom's <atom>rights</atom> element</a> is a text-based element</li>
					<ul>
						<li>requires the text to be repeated in every single entry</li>
						<li>explicitly states it <q>SHOULD NOT be used to convey machine-readable licensing information</q></li>
					</ul>
					<li>Machine-readable licenses need identity of licenses</li>
					<ul>
						<li>adding a link to a license uses a URI and allows to recognize the URI</li>
						<li><a href="http://www.iana.org/assignments/link-relations.html">Atom's basic link relations</a> do not include license semantics</li>
					</ul>
					<li><a href="http://tools.ietf.org/html/rfc4946">RFC 4946</a> defines a new link relationship for links to licenses</li>
					<li>License links can be added to Atom feeds or entries</li>
					<ul>
						<li>a new <atom>license</atom> link relationship is defined</li>
						<li>licenses can be recognized by comparing links to well-known URIs</li>
						<li>there is no universally standardized format for a <q>license description format</q></li>
					</ul>
				</ul>
			</slide>
			<slide>
				<title>Feed Paging and Archiving</title>
				<ul>
					<li>Feeds often are used to publish varying or changing collections of entries</li>
					<ul>
						<li><em>complete feeds</em> contain a list of all entries and may change completely</li>
						<li><em>paged feeds</em> are split across multiple documents and are not necessarily stable</li>
						<li><em>archived feeds</em> are split but are stable over time and allow repeated access</li>
					</ul>
					<li><a href="http://tools.ietf.org/html/rfc5005">RFC 5005</a> defines Atom extensions for defining these types of feeds</li>
					<ul>
						<li>by specifying the <q>type</q> of a feed, clients can better adapt their behavior</li>
						<li>plain Atom clients are still able to read these feeds, but have less information about them</li>
					</ul>
					<li>Complete feeds contain all entries of a feed (<q>top twenty blog posts</q>)</li>
					<li>Paged feeds are a set of linked feeds that constitute the logical feed</li>
					<ul>
						<li><atom>first</atom>, <atom>last</atom>, <atom>previous</atom>, and <atom>next</atom> link relationships</li>
						<li>there must be at least one of these relationships in each feed document</li>
					</ul>
					<li>Archived feeds are stable feed documents available from a <em>subscription document</em></li>
					<ul>
						<li><atom>prev-archive</atom>, <atom>next-archive</atom>,  and <atom>current</atom> link relationships</li>
						<li>subscription documents must link to archives to make archived entries available</li>
					</ul>
				</ul>
			</slide>
		</part>
        <part>
			<title>Conclusions</title>
			<slide>
				<title>Semantic Web Light</title>
				<ul>
					<li>Syndication creates representations for a few universal concepts</li>
					<li>Atom adds some concepts to RSS's model</li>
					<li>Syndication revolves around the idea of interacting with items</li>
					<li>Atom-based interaction is one way of implementing REST</li>
					<li>For more semantics, Atom is only the foundation</li>
				</ul>
			</slide>
        </part>
    </presentation>
    <presentation id="presentations">
        <title short="Presentations">Project Presentations</title>
        <date>2008-05-06</date>
        <toc class="resources"></toc>
        <toc class="abstract">...</toc>
		<slide>
			<title>Abstract</title>
			<p class="abstract"><toc class="abstract"/></p>
		</slide>
    </presentation>
</xslidy>
