Do the simple things

If you build Web-based information systems -- and who doesn't? -- it's a great idea to wrap them in Web services APIs. The more the merrier. By offering a choice between SOAP- and REST-flavored APIs, Amazon embraces diversity. But Amazon is even more inclusive than that. It gets the simple things right. The page that represents a book has a canonical URL that you can construct automatically. It carries basic metadata in standard HTML META tags. These rules seem too trivial to mention. But they are seldom followed, even though they can spell the difference between a healthy information system that integrates with a society of peers and an isolated outcast. Moral: do the simple things. [Full story at InfoWorld.com]

Below you'll find nine examples, one from each of the OPACs currently supported by LibraryLookup. Each example shows a typical URL, and the HTML <HEAD> tag (minus CSS and JavaScript). It's easy to pick on obvious flaws, like a leading <CENTER> tag before the <HTML> tag. But my point, really, is that URLs and HTML metadata are the two most basic kinds of APIs. They are the best ways to encourage unintended use. The failure to recognize them as APIs, and therefore to design them accordingly, is of course endemic. It's not just library OPACs who miss these opportunities. Hardly anyone gets this easy stuff right.

Example 5 is especially ironic. I can envision a glossy marketing sheet with a features checklist, and big green check in the "supports RDF" column. There's even, woo-hoo, a special RDF vocabulary used to describe the browser that fetched the page. Unfortunately, the metadata that would be useful to an integrator -- the title of the book being displayed, its author, its ISBN -- is nowhere to be found.

I'll be giving the keynote at day two of the Open Source Content Management conference. (Dave Winer is keynoting day one.) I've been thinking about elaborating on issues like the ones I touch on in this week's column. The provisional title for the talk: "All you need to know about content management, you learned in grade school." Let me know if that does or doesn't sound useful.

Example 1

URL: http://ksclib.keene.edu/search/tgroupware /tgroupware/-6,0,0,E /frameset&FF=tgroups+interaction+and+performance&1,1,
HTML HEAD:
<HTML>
<HEAD>
<TITLE>Keene-Link /All Locations</TITLE>
<BASE TARGET="_parent">
<META HTTP-EQUIV="Refresh"
CONTENT="600;URL=/search/">
</HEAD>

Example 2

URL: http://voyager.antiochne.edu/cgi-bin/Pwebrecon.cgi? v1=1&hd=1,1&CallBrowse=1& SEQ=20030408154140&PID=1256&SID=11
HTML HEAD:

<!-- Start of HTML header portion -->
<CENTER>
<A HREF="/webvoy.htm"><IMG ALIGN=TOP BORDER=0

 ALT="Start Over" SRC="/images/banner.gif"></A>
</CENTER>
<!-- End of HTML header portion -->
<!DOCTYPE HTML PUBLIC "-\//W3C\//DTD HTML 4.0 
  Transitional\//EN" 
 "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>WebVoyage Record View 1</TITLE>
</HEAD>


Example 3

URL: http://www.elpl.org:81/ipac20/ipac.jsp? session=1049830Q468CV.9679& profile=elp&uri=full=1100001\@!321380\@!2& ri=3&aspect=advanced&menu=search&source=10.2.2.5\@!elp& ipp=20&staffonly=&term=smith&index=BAW&uindex=& aspect=advanced&menu=search&ri=3#focus

HTML HEAD:

<html><head>
 <meta http-equiv="Content-Type" content="text/html; 
 charset=utf-8">
 <META HTTP-EQUIV="Expires" CONTENT="0"> 
 <title>iPac2.0</title><link 
 title="bannerstyles" href="ipac/css/ipac.css" 
 type="text/css" rel="stylesheet">
</head>


Example 4

URL: http://draweb.library.phila.gov/web2/tramp2.exe/ authority_hits/A09rr4r4.001? server=1home&item=1

HTML HEAD:

<HTML>
<!--Copyright 1996-1999 Data Research Associates, Inc. 
 All rights reserved. Removal of this notice violates 
 applicable  copyright laws.-->
<!--/English/Record.html-->
<META HTTP-EQUIV="REFRESH" CONTENT="900 ;
URL=/web2/tramp2.exe/log_out/A09rr4r4.002?server=1home">
<HEAD>
<TITLE>FLP Catalog - Brief Record
Display</title>
</head>


Example 5

URL: http://catalogue.sussex.ac.uk/www-bin/www_talis32

HTML HEAD:

<HTML>
<HEAD>
<?xml version="1.0"?>
<rdf:RDF 
 xmlns:rdf="http://www.w3c.org/1999/02/22-rdf-syntax-ns#" 
 xmlns:dc="http://purl.org/dc/elements/1.0/" 
 xmlns:tal="http://www.talis.com/talisxml/schema/1.0/">
<rdf:Description 
 rdf:about=
  "http://ustalis.lib.susx.ac.uk:80/www-bin/www_talis32?" 
 dc:publisher="University of Sussex" dc:format="text/html" 
 dc:creator="TalisWeb OPAC" dc:title="www_frame_start.tgml" 
 dc:date="2003-04-08T20:09:01">
<tal:object tal:type="xml-header" 
 tal:browser="Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) 
 AppleWebKit/51 (like Gecko) Safari/51">
</tal:object>
</rdf:Description>
</rdf:RDF>
<TITLE>TalisWeb Opac</TITLE>
<META content="www_frame_start.tgml" name=page>
</HEAD>


Example 6

URL: http://intranet.cheshire.gov.uk/cgi-bin/ viewpoint_server.sh? enqtype=SECOND&enqpara1=RESULT&oldenqpara1=DEFAULT& s_string=Blue%2BFire.&s_type=T&rcn=0340540672& media_code=1&sec_code=1&authorlist=/tmp/gasJOaW.L.001& filename=/tmp/gaskMai_L.001&page=0&no_of_results=00000004& type=TITLE&sec_stng=1,2,4,5,7,9,10,3,8,11,12,13,14,999& media_stng=&authorpage=0

HTML HEAD:

<HTML>
<HEAD>
<TITLE>Title
Information</TITLE></HEAD>


Example 7

URL: http://s250.b.tu-harburg.de:8080/DB=1/SET=2/TTL=1/SHW?FRST=1

HTML HEAD:

<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; 
  charset=iso8859-1">
 <meta http-equiv="cache-control"
content="no-cache">
 <meta http-equiv="pragma" content="no-cache">
<TITLE>Katalog der Universit&auml;tsbibliothek der
TUHH - 
 Search Full Title</TITLE>
</HEAD>


Example 8

URL: http://verdi.seattleu.edu/uhtbin/cgisirsi/Ql3fOhxb1W/41660019/9

HTML HEAD:

<HTML DIR="LTR">
<HEAD>
 <TITLE>[WebCat] Unicorn</TITLE>
 <META http-equiv="refresh"
 content="3540; 
URL=http://verdi.seattleu.edu/uhtbin/cgisirsi/41660019/58">
</HEAD>


Example 9

URL: http://www.wilinet.wccls.lib.or.us/Polaris/Search/ Z3950Gateway.dll/PowerPAC.1/iOVPfRxoy0EFT2z0o62FyG? SessionOrgID=1&so=&term=noad&by=AU&type=Keyword&loc=FullDisplay& start=2&action=full&using=27&multidb=&languageid=1033

HTML HEAD:

<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"
 xmlns:PACFfuncs="http://www.gaylord.com">
<head>
<META http-equiv="Content-Type" content="text/html; 
 charset=UTF-8">
<TITLE>Polaris PowerPAC</TITLE>
<link rel="stylesheet" type="text/css" href=
 "http://www.wilinet.wccls.lib.or.us/Polaris/stylesheets/
   PolarisStyles.asp">
</head>



Former URL: http://weblog.infoworld.com/udell/2003/04/11.html#a664