{"id":48,"date":"2006-01-17T17:57:40","date_gmt":"2006-01-17T22:57:40","guid":{"rendered":"http:\/\/dilettantes.code4lib.org\/2006\/01\/17\/on-unapi\/"},"modified":"2006-01-17T17:57:40","modified_gmt":"2006-01-17T22:57:40","slug":"on-unapi","status":"publish","type":"post","link":"https:\/\/rossfsinger.me\/blog\/2006\/01\/on-unapi\/","title":{"rendered":"On unAPI"},"content":{"rendered":"<p>After arguing with <a href=\"http:\/\/onebiglibrary.net\/project\/unapi\">Dan<\/a> for hours on how to implement <a href=\"http:\/\/www.code4lib.org\/specs\/unapi\/version-0\">unAPI<\/a>, I decided to take him up on his request and implement an unAPI service for our OPAC.\u00c2\u00a0 This way I would have some real world experience to back up my bitching.<\/p>\n<p>So, <a href=\"http:\/\/rsinger.library.gatech.edu\/search\/?\">here you go<\/a>.\u00c2\u00a0 This script takes our SRU to OpenSearch services for the OPAC and the Universal Catalog.\u00c2\u00a0 I&#8217;ve modified the OpenSearch CGI to include the unAPI identifier.<\/p>\n<p>The unAPI service is written in PHP and calls the SRU service and presents the results accordingly.<\/p>\n<p>So, my reactions:<\/p>\n<ol>\n<li>The <a href=\"http:\/\/www.crockford.com\/JSON\/\">JSON<\/a> requirement doesn&#8217;t really bother me.\u00c2\u00a0 Whatever is chosen is rather arbitrary, so I&#8217;m ok with JSON.\u00c2\u00a0 I&#8217;d be just as ok with XML or text delimited.\u00c2\u00a0 I see no real difference.<\/li>\n<li>I am not entirely convinced that just exposing the metadata (with no wrapper) is scaleable.\u00c2\u00a0 I&#8217;m not saying I can&#8217;t be convinced, I&#8217;m just saying I&#8217;m not currently.<\/li>\n<li>I see no point in sending the status along with the response.<\/li>\n<li>This is, indeed, much simpler than making an OAI-PMH server in PHP over Voyager.<\/li>\n<li>I would really prefer parameters to paths.\u00c2\u00a0 I think there are too many assumptions about the implementor (and the future) to use paths.<\/li>\n<\/ol>\n<p>What I am still not entirely sure about fundamentally, however, is <em>why<\/em> we need another sharing protocol.\u00c2\u00a0 <a href=\"http:\/\/cipolo.med.yale.edu\/pipermail\/gcs-pcs-list\/2006-January\/000304.html\">Dan claims it&#8217;s because OAI-PMH and ATOM are still too complicated<\/a> for stupid people and the less technically inclined to pick up and he wants something simpler.<\/p>\n<p>What I don&#8217;t understand is why we don&#8217;t just make a &#8220;simpler&#8221; API to one of those protocols.\u00c2\u00a0 Choose a particular syndication protocol (after all, that&#8217;s really what OAI-PMH is) and then just make an API to &#8220;Gather\/Create\/Share&#8221; with it.<\/p>\n<p>Personally, I am much more interested in making our OAI-PMH archives and our SRW\/U servers available via ATOM, much like we made SRU available to OpenSearch.\u00c2\u00a0 That way we pick up on the wide variety of tools already out there.<\/p>\n<p>This interests me on other levels, since I&#8217;m really starting to picture the Communicat as a sort of ATOM store.<\/p>\n<p>I see a lot of potential with unAPI (a whole hell of a lot of potential), but I would rather utilize an existing protocol (especially one that promises to have a lot of users, read: ATOM) than build another library system that is largely ignored outside our community.<\/p>\n<p>On a related note, I want to point out what I see as two wastes of library developers&#8217; time:<\/p>\n<ul>\n<li>Walt is right:\u00c2\u00a0 <a href=\"http:\/\/cites.boisestate.edu\/v6i2a.htm\">DON&#8217;T MAKE LIBRARY TOOLBARS<\/a> (it&#8217;s in there, trust me).\u00c2\u00a0 It&#8217;s asking too much to expect people to install and use something that has such a limited scope.<\/li>\n<li>The <a href=\"http:\/\/vielmetti.typepad.com\/superpatron\/2006\/01\/google_talk_im_.html\">OPAC jabberbot<\/a> follows the same line of thinking.\u00c2\u00a0 In #code4lib, our resident bot (Panizzi) employs an OpenSearch client.\u00c2\u00a0 Honestly, this makes <em>tons<\/em> more sense since it&#8217;s easy (honest!) to make your OPAC speak OpenSearch and there are going to be a lot more useful things available via OpenSearch than a handful of library catalogs.<\/li>\n<\/ul>\n<p>No, I think we&#8217;re better served making our data work contextually in a user&#8217;s information sphere.\u00c2\u00a0 Push our data out to common aggregators rather than replicate the services to handle our arcane practices.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After arguing with Dan for hours on how to implement unAPI, I decided to take him up on his request and implement an unAPI service for our OPAC.\u00c2\u00a0 This way I would have some real world experience to back up my bitching. So, here you go.\u00c2\u00a0 This script takes our SRU to OpenSearch services for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5,4],"tags":[],"class_list":["post-48","post","type-post","status-publish","format-standard","hentry","category-coding","category-php","category-unapi"],"_links":{"self":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts\/48","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/comments?post=48"}],"version-history":[{"count":0,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/posts\/48\/revisions"}],"wp:attachment":[{"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/media?parent=48"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/categories?post=48"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rossfsinger.me\/blog\/wp-json\/wp\/v2\/tags?post=48"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}