<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1509353312012566370</id><updated>2012-02-17T02:05:51.167-08:00</updated><category term='SOLR'/><category term='metasearch'/><category term='jisc-transcoder'/><category term='howto'/><category term='IEDemonstrator'/><category term='eLearning'/><category term='LinkedData'/><category term='Preservation'/><category term='TerminologyServices'/><category term='Z3950'/><category term='RepositoryChallenge'/><category term='Lexaurus'/><category term='Search'/><category term='Announcement'/><category term='JISC-CRIG-2007'/><category term='ScreenScraping'/><category term='CRIG'/><category term='JISC'/><category term='jisc-crig-unconference-2007'/><category term='LOM'/><category term='ControlledVocabularies'/><category term='OpenRequest'/><category term='project-transcoder'/><category term='asn.1'/><category term='coding'/><category term='ServiceRegistry'/><category term='IESR'/><category term='Jackrabbit'/><category term='jzkit'/><category term='OAI-PMH'/><category term='Repositories'/><title type='text'>Ian's work blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-2680697475366504021</id><published>2008-11-06T09:08:00.000-08:00</published><updated>2008-11-06T09:29:14.097-08:00</updated><title type='text'>Catching up with sprints and progress</title><content type='html'>Been a while since I posted, alas blogging not uber high on my GTD list, so often gets pushed back... However, I thought it might be fun to share some of the work we're doing in the lexaurus vocabulary editor in relation to SKOS vocabularies. Rob Tice has sent me some screenshots of lexaurus ingesting the SKOS vocabulary for agriculture, here's the results&lt;br /&gt;&lt;br /&gt;Here in image one there's the post ingest status report saying that 28954 terms have been imported in 269 seconds. As a part of the SKOS import we have to do a fair few cross references and referential lookups, so the performance isn't quite as blistering as the ZThes import, still pretty good tho.&lt;br /&gt;&lt;br /&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VgrZEWCaxtk/SRMk-xeGaiI/AAAAAAAAAHg/cFmsaebtGmI/s1600-h/AGROVOC.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_VgrZEWCaxtk/SRMk-xeGaiI/AAAAAAAAAHg/cFmsaebtGmI/s320/AGROVOC.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265593050176317986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's some more screenies showing the label nodes and editing pages in different languages. The data is held in the lexaurus canonical schema, so it can go out as ZThes or SKOK or whatever else we need.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VgrZEWCaxtk/SRMlIAps-nI/AAAAAAAAAHo/56mrzGZJiPk/s1600-h/exclusive+economic+zones.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 201px;" src="http://2.bp.blogspot.com/_VgrZEWCaxtk/SRMlIAps-nI/AAAAAAAAAHo/56mrzGZJiPk/s320/exclusive+economic+zones.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265593208870337138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/SRMlYW2ibVI/AAAAAAAAAHw/fiZImoHP6Ik/s1600-h/holland+alt+label.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 201px;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/SRMlYW2ibVI/AAAAAAAAAHw/fiZImoHP6Ik/s320/holland+alt+label.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265593489707658578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VgrZEWCaxtk/SRMl0L3tQNI/AAAAAAAAAH4/ztY_bHRicoc/s1600-h/netherlands+preferred+label+edit.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_VgrZEWCaxtk/SRMl0L3tQNI/AAAAAAAAAH4/ztY_bHRicoc/s320/netherlands+preferred+label+edit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5265593967796109522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More to follow, but I thought these interesting to put up now, just to stimulate discussion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-2680697475366504021?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/2680697475366504021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=2680697475366504021' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/2680697475366504021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/2680697475366504021'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/11/catching-up-with-sprints-and-progress.html' title='Catching up with sprints and progress'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VgrZEWCaxtk/SRMk-xeGaiI/AAAAAAAAAHg/cFmsaebtGmI/s72-c/AGROVOC.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-5744996415266802505</id><published>2008-08-06T08:02:00.000-07:00</published><updated>2008-08-07T14:23:34.539-07:00</updated><title type='text'>Sprint 3 - Washup and planning</title><content type='html'>A few months ago we started to experiment with scrum, sprints and backlogs in an attempt to formalise our agile development processes. I thought it might be fun to try and keep the blog updated every couple of weeks with what's moving in the k-int world.. so here goes...&lt;br /&gt;&lt;br /&gt;Hana's done some great work on the zero functionality release for the JISC Transcoder Project and it's basically finished. I'm tasked with uploading this to the Amazon elastic cloud this week whilst hana pushes on with having a go at SCORM 2004 to IMS CP 1.1 trascoding. Hana has also spent a couple of days fixing a drag and drop bug in the vocabulary editor application and getting reload installed for some testing. We're on the lookout for an SCORM 2004 content to test with (Especially older BBC JAM content).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnDOAHtHVI/AAAAAAAAAEo/4lFZN_KNhGo/s1600-h/Transcoder_ScreenShot.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnDOAHtHVI/AAAAAAAAAEo/4lFZN_KNhGo/s320/Transcoder_ScreenShot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5231427087485443410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Liams been doing loads of work refactoring the import and export modules in Vocabulary bank to make sure we can ingest and export both ZThes and SKOS and crosswalk between the two and in preparation for creating some additional export formats for specialist educational / eLearning applications. Liam's also managed to create an installer for the new release of OpenCRM, our open source third sector call management / CRM application to go off to Sheffield Advice Link. We've been told that the latest released vocabulary editor can import the full 7923 terms from the IPSV Integrated Public Sector Vocabulary in 17 seconds, which isn't bad going, considering the amount of cross referencing and revision management thats going on under the hood.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnCq_lOr4I/AAAAAAAAAEg/h8PUh7pV1Ys/s1600-h/editor.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnCq_lOr4I/AAAAAAAAAEg/h8PUh7pV1Ys/s320/editor.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5231426486045421442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VgrZEWCaxtk/SJnEK3-UWgI/AAAAAAAAAEw/fnlhBfQjJHs/s1600-h/Screenshot2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_VgrZEWCaxtk/SJnEK3-UWgI/AAAAAAAAAEw/fnlhBfQjJHs/s320/Screenshot2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5231428133270608386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've been on holiday ;) but whilst I've been away I've made huge steps forward on a stand-alone OAI/ORE server that we can use to replace all the custom OAI servers we have dotted around the place. With the new server you just point the app at a JDBC data source and it does introspection to discover the DB schema, detect primary keys and timestamps, a few clicks later and you have an OAI/ORE feed for your database. The same infrastructure can be used in online or batch mode (Batch mode detecting changed records with checksums rather than timestamps, useful for normalised schemas where changes might not update datestamps). Initially this is for an update to the &lt;a href="http://www.peoplesnetwork.gov.uk/discover"&gt;Peoples network discover&lt;/a&gt; application, but I've high hopes it will be useful in a wide range of cultural and governmental settings. This should give us an instant linked-data capability for projects like peoples network and other related metadata aggregator projects we're involved with at the moment.&lt;br /&gt;&lt;br /&gt;I've also (To my eternal shame in the office) started to do some real work on the JZKit documentation and the maven auto generated site, to make it easier for users of the toolkit to get to grips and diagnose problems. There seem to be a huge number of Z3950 projects in the offing at the moment, for a protocol thats supposedly legacy. I think thats great!&lt;br /&gt;&lt;br /&gt;Rob's made huge steps forward with the assisted tagging tool which is being used (in anger by many users) to create descriptive metatdata for literally thousands of learning resources. The new tagging tool seamlessly integrates with the bank vocabulary service so we can update the vocabularies used without updating the tool, and the new assisted tagging feature makes it easy for users to quickly tag resources without needed an in-depth knowledge of curriculum and administrative structures.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnCfrQXmLI/AAAAAAAAAEY/JsoTfkLLte4/s1600-h/assisted+tagging.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnCfrQXmLI/AAAAAAAAAEY/JsoTfkLLte4/s320/assisted+tagging.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5231426291610654898" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-5744996415266802505?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/5744996415266802505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=5744996415266802505' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5744996415266802505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5744996415266802505'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/08/sprint-3-washup-and-planning.html' title='Sprint 3 - Washup and planning'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VgrZEWCaxtk/SJnDOAHtHVI/AAAAAAAAAEo/4lFZN_KNhGo/s72-c/Transcoder_ScreenShot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-8816145492166139310</id><published>2008-07-27T05:34:00.000-07:00</published><updated>2008-07-27T06:17:20.192-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project-transcoder'/><category scheme='http://www.blogger.com/atom/ns#' term='jisc-transcoder'/><title type='text'>Updates and New Projects</title><content type='html'>Thought it best to just have a quick update as there's so much going on at the moment I'm in danger of missing important announcements.&lt;br /&gt;&lt;br /&gt;Just before I left for a weeks holiday Neil, Hana and I attended a kick-off meeting for the &lt;a href="http://wiki.cetis.ac.uk/Get_Involved_with_Transcoder"&gt;JISC Transcoder project&lt;/a&gt;. There's information about the project at that link, although I'll be posting more about this shortly. We've already had loads of interest both from content providers and interested HE partners who want to be involved in testing and development. To cause such a stir so early on is great IMNSHO. I'm going to try and get a project page together in the coming week, and unless anyone has any better ideas I'm planning to tag project announcements and direct links as jisc-transcoder. A project-transcoder tag is available for resources useful to the project. so we can get some feeds going.&lt;br /&gt;&lt;br /&gt;Hana has already made huge progress on the first release (Which transcodes a package into itself, but lets us test the upload/download and cloud infrastructure) and we expect to be sitting down real soon now to put some priorities on the next release.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pipes.yahoo.com/pipes/pipe.info?_id=Vq5cg9tb3RGbciAq60jTQA"&gt;Here's an aggregated pipe &lt;/a&gt;of transcoder tags and blog entries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-8816145492166139310?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/8816145492166139310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=8816145492166139310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/8816145492166139310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/8816145492166139310'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/07/updates-and-new-projects.html' title='Updates and New Projects'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-595967060821424513</id><published>2008-07-14T09:45:00.000-07:00</published><updated>2008-07-14T09:53:20.937-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='jzkit'/><category scheme='http://www.blogger.com/atom/ns#' term='OAI-PMH'/><category scheme='http://www.blogger.com/atom/ns#' term='ScreenScraping'/><category scheme='http://www.blogger.com/atom/ns#' term='LinkedData'/><category scheme='http://www.blogger.com/atom/ns#' term='Preservation'/><title type='text'>Wanted : HTML digitisation Silos needing an OAI feed</title><content type='html'>We've just been talking to a really cool sheffield geek who's got a neat HTML screen-scraping service and integrated it into JZKit to provide dynamic meta-search across services with no machine to machine interface. Very Cool.&lt;br /&gt;&lt;br /&gt;However, in our discussions we realised that it might have even more value as a tool for converting HTML Silos into metadata-rich repositories. By combining this service with a SWORD deposit client and some MD5 checksums we can help digitisation projects who have large well-organised web sites, but perhaps don't have OAI or SRU/SRW, we can create a preservation hub that exposes the content using open standards.&lt;br /&gt;&lt;br /&gt;If you have a HTML silo of digitized data (Or any data for that matter) but no OAI or SRU, and you need such services, we'd love to test this idea by writing the scripts to populate an OAI and SRU repository... Any volunteers?&lt;br /&gt;&lt;br /&gt;Going to spend some spare time throwing this and the JDBC/OAI/SRU gateway together hopefully in time for library mashup and bathcamp. Maybe we can come out of those events with some newly exposed data sources contributing to the linked data network.&lt;br /&gt;&lt;br /&gt;Fun :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-595967060821424513?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/595967060821424513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=595967060821424513' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/595967060821424513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/595967060821424513'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/07/wanted-html-digitisation-silos-needing.html' title='Wanted : HTML digitisation Silos needing an OAI feed'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-6172571489282008972</id><published>2008-07-13T10:35:00.000-07:00</published><updated>2008-07-13T10:43:15.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOLR'/><category scheme='http://www.blogger.com/atom/ns#' term='Z3950'/><category scheme='http://www.blogger.com/atom/ns#' term='Announcement'/><title type='text'>New version of JZkit Proxy Server</title><content type='html'>An updated version of the JZKit Proxy server (With an example configuration exposing a number of SOLR backends as a z3950 target) is available for download &lt;a href="http://developer.k-int.com/downloads/jzproxy/"&gt;Here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since the initial test at the Bath CRIG barcamp we've improved the error handling and diagnostics, improved the mapping of Z3950 database names, made the attribute mapping more configurable (The out out the box sample config is pretty much Bath profile level 1 OK), improved the structure==year mappings for date search and done some pretty hefty load testing which revealed a thread leak in certain situations (It's fixed now).&lt;br /&gt;&lt;br /&gt;Please download, play and get in touch with any questions / comments.&lt;br /&gt;&lt;br /&gt;Ian.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-6172571489282008972?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/6172571489282008972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=6172571489282008972' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/6172571489282008972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/6172571489282008972'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/07/new-version-of-jzkit-proxy-server.html' title='New version of JZkit Proxy Server'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-7363107029145410685</id><published>2008-06-08T02:38:00.000-07:00</published><updated>2008-06-08T02:50:35.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jzkit'/><category scheme='http://www.blogger.com/atom/ns#' term='JISC'/><category scheme='http://www.blogger.com/atom/ns#' term='IEDemonstrator'/><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='Z3950'/><title type='text'>JISC CRIG DRY / IEDemonstrator BarCamp - Testing the Z3950/SOLR Bridge</title><content type='html'>The JZKit to SOLR Z3950 bridge has had it's first real foray outside of internal k-int projects by providing a z39.50 server to cross search &lt;a href="http://www.intute.ac.uk/"&gt;Intute&lt;/a&gt; and the &lt;a href="http://ora.ouls.ox.ac.uk/objects/repository:ora"&gt;Oxford  University Research Archive&lt;/a&gt; in a single z39.50 search. Been itching to try this for absolutely ages, and the CRIG/DRYbarcamp was the perfect opportunity to talk to the projects and quickly hack out the config needed to set up the server.&lt;br /&gt;&lt;br /&gt;Here's the proof of the pudding, a z39.50 search for title=science translated into solr searches against the two repositories and integrated into a single interleaved result set. Easily integrated into any meta-search engine implementing z39.50. Cool!&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Z&gt; open tcp:@:2100&lt;br /&gt;Connecting...OK.&lt;br /&gt;Sent initrequest.&lt;br /&gt;Connection accepted by v3 target.&lt;br /&gt;ID     : 174&lt;br /&gt;Name   : JZkit generic server / JZKit Meta Search Service&lt;br /&gt;Version: 3.0.0-SNAPSHOT&lt;br /&gt;Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets negotiationModel&lt;br /&gt;Elapsed: 0.006905&lt;br /&gt;Z&gt; base oxford intute&lt;br /&gt;Z&gt; format xml&lt;br /&gt;Z&gt; elements solr&lt;br /&gt;Z&gt; find @attr 1=4 science&lt;br /&gt;Sent searchRequest.&lt;br /&gt;Received SearchResponse.&lt;br /&gt;Search was a success.&lt;br /&gt;Number of hits: 803, setno 1&lt;br /&gt;records returned: 0&lt;br /&gt;Elapsed: 0.003859&lt;br /&gt;Z&gt; show 1+10&lt;br /&gt;Sent presentRequest (1+10).&lt;br /&gt;Records: 10&lt;br /&gt;[SOLR]Record type: XML&lt;br /&gt;&lt;doc&gt;&lt;arr name="ThirdPartyCopyright"&gt;&lt;div id="1fga" class="ArwC7c ckChnd"&gt;&lt;str&gt;No Third Party copyright&lt;/str&gt;&lt;/arr&gt;&lt;arr name="author"&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;/arr&gt;&lt;arr name="collection"&gt;&lt;str&gt;ora:general&lt;/str&gt;&lt;/arr&gt;&lt;bool name="contains_full_text"&gt;&gt;false&lt;/bool&gt;&lt;arr name="content_type"&gt;&lt;str&gt;general&lt;/str&gt;&lt;/arr&gt;&lt;str name="copyright_date"&gt;1982&lt;/str&gt;&lt;arr name="copyright_holder"&gt;&lt;str&gt;John Wiley &amp;amp; Sons, Ltd.&lt;/str&gt;&lt;/arr&gt;&lt;arr name="editor"&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;/arr&gt;&lt;arr name="f_college"&gt;&lt;str&gt;St Peter's College&lt;/str&gt;&lt;/arr&gt;&lt;str name="f_copyright_date"&gt;1982&lt;/str&gt;&lt;arr name="f_faculty"&gt;&lt;str&gt;Social Sciences Division - Environment,Centre for the - Geography,School of&lt;/str&gt;&lt;/arr&gt;&lt;arr name="f_institution"&gt;&lt;str&gt;University of Oxford&lt;/str&gt;&lt;str/&gt;&lt;str/&gt;&lt;str/&gt;&lt;/arr&gt;&lt;arr name="f_name"&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;/arr&gt;&lt;arr name="f_publisher"&gt;&lt;str&gt;John Wiley &amp;amp; Sons, Ltd.&lt;/str&gt;&lt;/arr&gt;&lt;arr name="f_researchgroup"&gt;&lt;str&gt;Transformations: Economy, Society and Place&lt;/str&gt;&lt;/arr&gt;&lt;str name="f_rights"&gt;Publisher has copyright&lt;/str&gt;&lt;str name="f_status"&gt;Peer reviewed&lt;/str&gt;&lt;arr name="f_subject"&gt;&lt;str&gt;Geography&lt;/str&gt;&lt;/arr&gt;&lt;arr name="faculty"&gt;&lt;str&gt;Social Sciences Division - Environment,Centre for the - Geography,School of&lt;/str&gt;&lt;/arr&gt;&lt;arr name="family"&gt;&lt;str&gt;Clark&lt;/str&gt;&lt;str&gt;Herbert&lt;/str&gt;&lt;str&gt;Johnston&lt;/str&gt;&lt;/arr&gt;&lt;arr name="fullname"&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;str&gt;John Wiley &amp;amp; Sons, Ltd.&lt;/str&gt;&lt;str&gt;John Wiley &amp;amp; Sons, Ltd.&lt;/str&gt;&lt;/arr&gt;&lt;arr name="genre"&gt;&lt;str&gt;Book (monograph): Section of book or chapter of book&lt;/str&gt;&lt;/arr&gt;&lt;arr name="given"&gt;&lt;str&gt;Gordon L.&lt;/str&gt;&lt;str&gt;D. T.&lt;/str&gt;&lt;str&gt;R. J.&lt;/str&gt;&lt;/arr&gt;&lt;arr name="hdl"&gt;&lt;str&gt;&lt;a href="http://ora.ouls.ox.ac.uk:8081/10030/2034" target="_blank"&gt;http://ora.ouls.ox.ac.uk:8081/10030/2034&lt;/a&gt;&lt;/str&gt;&lt;/arr&gt;&lt;str name="host"&gt;Geography and the urban environment : progress in research and applications&lt;/str&gt;&lt;str name="id"&gt;uuid:89494f00-a92b-4914-8f9a-bcede5a4d9be&lt;/str&gt;&lt;arr name="institution"&gt;&lt;str&gt;University of Oxford&lt;/str&gt;&lt;str/&gt;&lt;str/&gt;&lt;str/&gt;&lt;/arr&gt;&lt;arr name="isbn"&gt;&lt;str&gt;0471102253&lt;/str&gt;&lt;/arr&gt;&lt;str name="issue_date"&gt;1982&lt;/str&gt;&lt;str name="language"&gt;en&lt;/str&gt;&lt;arr name="oxfordCollege"&gt;&lt;str&gt;St Peter's College&lt;/str&gt;&lt;/arr&gt;&lt;str name="pages"&gt;41-61&lt;/str&gt;&lt;bool name="peer_reviewed"&gt;true&lt;/bool&gt;&lt;arr name="person_name"&gt;&lt;str&gt;Gordon L. Clark&lt;/str&gt;&lt;str&gt;D. T. Herbert&lt;/str&gt;&lt;str&gt;R. J. Johnston&lt;/str&gt;&lt;/arr&gt;&lt;arr name="pid"&gt;&lt;str&gt;uuid:89494f00-a92b-4914-8f9a-bcede5a4d9be&lt;/str&gt;&lt;/arr&gt;&lt;arr name="publisher"&gt;&lt;str&gt;John Wiley &amp;amp; Sons, Ltd.&lt;/str&gt;&lt;/arr&gt;&lt;arr name="researchGroup"&gt;&lt;str&gt;Transformations: Economy, Society and Place&lt;/str&gt;&lt;/arr&gt;&lt;str name="review_status"&gt;Peer reviewed&lt;/str&gt;&lt;arr name="rightsOwnership"&gt;&lt;str&gt;Publisher has copyright&lt;/str&gt;&lt;/arr&gt;&lt;str name="status"&gt;Published&lt;/str&gt;&lt;arr name="subject"&gt;&lt;str&gt;Geography&lt;/str&gt;&lt;/arr&gt;&lt;date name="timestamp"&gt;2008-06-02T07:36:29.419Z&lt;/date&gt;&lt;str name="title"&gt;Policy science and instrumental reason&lt;/str&gt;&lt;arr name="typeofresource"&gt;&lt;str&gt;text&lt;/str&gt;&lt;/arr&gt;&lt;str name="urn"&gt;uuid:89494f00-a92b-4914-8f9a-bcede5a4d9be&lt;/str&gt;&lt;str name="volume"&gt;5&lt;/str&gt;&lt;arr name="website"&gt;&lt;str&gt;&lt;a href="http://www.geog.ox.ac.uk/staff/glclark.php" target="_blank"&gt;http://www.geog.ox.ac.uk/staff/glclark.php&lt;/a&gt;&lt;/str&gt;&lt;str&gt;&lt;a href="http://eu.wiley.com/WileyCDA/Section/index.html" target="_blank"&gt;http://eu.wiley.com/WileyCDA/Section/index.html&lt;/a&gt;&lt;/str&gt;&lt;/arr&gt;&lt;/doc&gt;&lt;br /&gt;[SOLR]Record type: XML&lt;br /&gt;&lt;doc&gt;&lt;arr name="basicSearchField"&gt;&lt;str&gt;Science&lt;/str&gt;&lt;str&gt;Science&lt;/str&gt;&lt;/arr&gt;&lt;arr name="identifier"&gt;&lt;str&gt;urn:ISSN:0036-8075&lt;/str&gt;&lt;str&gt;oai:epubs.cclrc.ac.uk:serial/1252&lt;/str&gt;&lt;/arr&gt;&lt;str name="record_id"&gt;oai:epubs.cclrc.ac.uk:serial/1252&lt;/str&gt;&lt;str name="repository_id"&gt;57&lt;/str&gt;&lt;str name="repository_name"&gt;STFC ePublication Archive&lt;/str&gt;&lt;str name="solr_record_id"&gt;57-oai:epubs.cclrc.ac.uk:serial/1252&lt;/str&gt;&lt;arr name="title"&gt;&lt;str&gt;Science&lt;/str&gt;&lt;str&gt;Science&lt;/str&gt;&lt;/arr&gt;&lt;/doc&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-7363107029145410685?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/7363107029145410685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=7363107029145410685' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7363107029145410685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7363107029145410685'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/06/jisc-crig-dry-iedemonstrator-barcamp.html' title='JISC CRIG DRY / IEDemonstrator BarCamp - Testing the Z3950/SOLR Bridge'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-9212277723347685653</id><published>2008-06-08T02:08:00.000-07:00</published><updated>2008-11-13T03:20:28.054-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IEDemonstrator'/><category scheme='http://www.blogger.com/atom/ns#' term='TerminologyServices'/><category scheme='http://www.blogger.com/atom/ns#' term='Lexaurus'/><category scheme='http://www.blogger.com/atom/ns#' term='ControlledVocabularies'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><title type='text'>JISC CRIG / IEDemonstrator BarCamp - Controlled Vocabs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VgrZEWCaxtk/SEuno5o7xvI/AAAAAAAAADc/iATp5Ob3dyo/s1600-h/lex-1.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_VgrZEWCaxtk/SEuno5o7xvI/AAAAAAAAADc/iATp5Ob3dyo/s320/lex-1.png" alt="" id="BLOGGER_PHOTO_ID_5209441715093227250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Beautiful Sunny morning here in Sheffield, and all seems well with the world. It's taken me a day to recover from the traveling (mostly) but now I'm feeling vaguely human again, it's time to write about bits of the CRIG / IEDemonstrator day.&lt;br /&gt;&lt;br /&gt;Controlled Vocabularies / Terminology Services&lt;br /&gt;&lt;br /&gt;Had a great discussion about this with the &lt;a href="http://www.jisc.ac.uk/whatwedo/programmes/programme_rep_pres/shared_services/project_names.aspx"&gt;Names&lt;/a&gt;, &lt;a href="http://hilt.cdlr.strath.ac.uk/"&gt;HILT&lt;/a&gt; and the &lt;a href="http://hypermedia.research.glam.ac.uk/kos/star/"&gt;STAR&lt;/a&gt; project. Everyone showed a sample of what kind of vocab service they are working with, and the pattern of a pretty web app fronting a web-service back-end was pretty much the defacto. K-Int's interest really centers around the work we are doing with &lt;a href="http://www.vocman.com/"&gt;Vocman&lt;/a&gt; in the learning sector (See screen-shot). Although the lexaurus suite isn't tied to any particular metadata scheme or representation we have worked almost exclusively with &lt;a href="http://zthes.z3950.org/"&gt;ZThes&lt;/a&gt; to date. After talking with these projects it seems critical that we write the &lt;a href="http://www.w3.org/2004/02/skos/"&gt;SKOS&lt;/a&gt; adapters sooner rather than later for import and export, so thats something I'm going to push for ASAP in the vocman development plan. Hopefully, that will add another SRU searchable terminology service to the IE.&lt;br /&gt;&lt;br /&gt;Our small prototyping group was tasked with working out how vocabulary services could be used WRT repositories. We talked around many use cases, from improved metadata creation and validation on submission (This works great for both subject headings and the name authority services like NAMES) and also improved precision for searchers, and better current awareness and dissemination services, by allowing subscribers to follow a single controlled term and have that term translated into whatever subject scheme is in use at a given repo. The issue here is that without the initial effort of improved metadata (Keeping in mind Pauls closing comment about lets not get too hung up on the metadata) we decided to focus on ways of improving the metadata of items attached to deposited artifacts.&lt;br /&gt;&lt;br /&gt;One of our group (I'm really sorry, memory has failed me, but please comment if it was you), discussed ways they have managed to put an external metadata editing page behind a repository submission page, through use of proxies. Thus, the repository is kept un-polluted by the metadata editing app, but the presentation of a form is transparent to the depositor. So our final paper prototype extended the deposit service by adding a response parameter of the URL at which the metadata for an item could be edited. This editing environment would be pre-configured to use external vocabulary services and assist the user in selecting such terms. The tool could them post back the metadata using some repository specific adapter. For example, adding a Datastream to a fedora object using the rest service, or some other system, for example, auto publishing into an indexing service such as Zebra.&lt;br /&gt;&lt;br /&gt;One interesting side note is that we ran into the old content dis-aggregation ussues again a little when talking about how we can improve the metadata attached to a packaged item.&lt;br /&gt;&lt;br /&gt;At k-int we've long since discussed the need to take the &lt;a href="http://k-int.blogspot.com/2008/02/mlas-cultural-learning-objects-project.html"&gt;Tagging Tool&lt;/a&gt; and turn it into a web application for editing metadata records using controlled vocab sources and then publishing those records using a pluggable system of adapters. The Controlled Vocab conversations have made me look at this in a new light, and I think its about time we got to hacking something out. One for next weekend perhaps!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-9212277723347685653?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/9212277723347685653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=9212277723347685653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/9212277723347685653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/9212277723347685653'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/06/jisc-crig-iedemonstrator-barcamp.html' title='JISC CRIG / IEDemonstrator BarCamp - Controlled Vocabs'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VgrZEWCaxtk/SEuno5o7xvI/AAAAAAAAADc/iATp5Ob3dyo/s72-c/lex-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-721595574252784935</id><published>2008-06-01T03:55:00.000-07:00</published><updated>2008-06-01T04:07:57.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jzkit'/><category scheme='http://www.blogger.com/atom/ns#' term='ServiceRegistry'/><category scheme='http://www.blogger.com/atom/ns#' term='metasearch'/><category scheme='http://www.blogger.com/atom/ns#' term='IESR'/><title type='text'>Upcoming Changes to JZKit Configuration</title><content type='html'>JZSome sunday musings on the Configuration mechanism in the jzkit_Service module...&lt;br /&gt;&lt;br /&gt;the JZKit_service module is the glue module that pulls together all the other components into a federated meta search component capable of resolving internal collection and landscape names into a list of external z39.50/sru/srw/opensearch/SOLR/JDBC/etc/etc services and broadcasting a search to those services, integrating the results and providing a unified result set.&lt;br /&gt;&lt;br /&gt;This gives rise to a problem: For solutions like the previous Z39.50/SOLR bridge, we want a simple XML config file that a user can hack once, then leave. For more complicated applications, we need a real relational database behind the app to manage the complex config that goes along with large information network archtectures.&lt;br /&gt;&lt;br /&gt;Here's the rub: JZKit carries with it a very detailed service registry. It's purpose isnt like the JISC IESR to be a registry in it's own right, but to support the search process. More and more, there is a need to make the JZKit service registry searchable in it's own right (As a Z39.50 Explain database, or as an SRU Explain collection / ZeeRex records).&lt;br /&gt;&lt;br /&gt;This has been bothering me for a while, yet the answer has pretty much been staring me in the face all along. So, here's what I'm considering for the final release of JZKit3:&lt;br /&gt;&lt;br /&gt;1. The current "InMemoryConfig" which is loaded from XML config files will be deprecated.&lt;br /&gt;&lt;br /&gt;2. It will be replaced by an in-memory derby database, essentially just the current database backed config mechanism, but with an in-memory database.&lt;br /&gt;&lt;br /&gt;3. The XML config files will be left intact, but considered to be a "BootStrap" mechanism. At startup, JZKit will scan the config files and update/create any entries in the configuration database.&lt;br /&gt;&lt;br /&gt;Thus, the "In-Memory" config will remain as before, but instead of being held in hashmaps the data will be inside a derby database. This means we can now define first and foremost a JDBC backed datasource for the explain database and make it searchable even for static content.&lt;br /&gt;&lt;br /&gt;--&gt; Free explain service for any JZKit shared collections.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-721595574252784935?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/721595574252784935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=721595574252784935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/721595574252784935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/721595574252784935'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/06/upcoming-changes-to-jzkit-configuration.html' title='Upcoming Changes to JZKit Configuration'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-2539610146569026181</id><published>2008-05-27T09:27:00.000-07:00</published><updated>2008-05-27T09:49:40.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jzkit'/><category scheme='http://www.blogger.com/atom/ns#' term='SOLR'/><category scheme='http://www.blogger.com/atom/ns#' term='Z3950'/><category scheme='http://www.blogger.com/atom/ns#' term='metasearch'/><title type='text'>Exposing SOLR service(s) as a Z3950 server</title><content type='html'>JZKit is a pretty large toolkit for developers of search services to embed in their own systems, and it's not always easy to get to grips with ;). Partly thats because if you're using JZKit you're probably already dealing with the Z39.50 specifications along with a host of other concerns.&lt;br /&gt;&lt;br /&gt;What developers need are simple starter apps that they can use to hit the ground running. In JZKit3 we've decided to try and address this by putting up some sample configurations of the tool that do useful stuff out of the box. First up.. Making a SOLR server visible as a Z39.50 Server using an easy to change XML config file. Why do that? Well lots of reasons, the most common one at the moment is that SOLR is being used to provide search interfaces into lots of interesting new content, not least of which are the whole new breed of digital object repository projects like Fedora and DSpace. What seems to keep coming back around is institutional librarians saying "But I want that content to be available along-side everything else".&lt;br /&gt;&lt;br /&gt;Kewl, a problem we can do something about. For now, the gateway distro lives in our maven repository &lt;a href="http://developer.k-int.com/maven2/org/jzkit/z3950ProxyServer/1.0.0-SNAPSHOT/"&gt;Here&lt;/a&gt;. If you fancy setting up a Z39.50 server to proxy for a local SOLR server, download the compressed tar file from the above URL and unpack it.&lt;br /&gt;&lt;br /&gt;Configuration.&lt;br /&gt;&lt;br /&gt;After unpacking, look in etc/JZKitConfig.xml you'll see a number of &lt;repository&gt; elements which define the SOLR services we want to search. (Actually, you can define all kinds of searchable resources here, not just SOLR, but other Z39.50 targets, SRU/SRW, OpenSearch, etc but thats for another day). You should be able to see the top &lt;repository&gt; points at a public SOLR server, adjust the URL to your local repository. The other elements inside the Repository element control the mapping of Z39.50 use attributes onto the SOLR search language and what record elements are requested as a part of search results. The &lt;collection&gt; code attribute specified what Z39.50 Database name this resource will be made available under. Having adjusted the config to point at a local server, cd ../bin and run "jzkit_service.sh start" this will give you a running Z3950 server, by default running on port 2100.&lt;br /&gt;&lt;br /&gt;From here, it should be plain sailing, here's the output of a yaz client session:&lt;br /&gt;&lt;br /&gt;(N.B.) XML Markup in the result record is being filtered out by blogger. Actual result record is XML (Actually, in this case it's just the SOLR &lt;doc&gt; element)&lt;br /&gt;&lt;br /&gt;yaz-client tcp:@:2100&lt;br /&gt;Connecting...OK.&lt;br /&gt;Sent initrequest.&lt;br /&gt;Connection accepted by v3 target.&lt;br /&gt;ID     : 174&lt;br /&gt;Name   : JZkit generic server / JZKit Meta Search Service&lt;br /&gt;Version: 3.0.0-SNAPSHOT&lt;br /&gt;Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets negotiationModel&lt;br /&gt;Elapsed: 0.006948&lt;br /&gt;Z&gt; base Test&lt;br /&gt;Z&gt; find @attr 1=4 Dell&lt;br /&gt;Sent searchRequest.&lt;br /&gt;Received SearchResponse.&lt;br /&gt;Search was a success.&lt;br /&gt;Number of hits: 1, setno 1&lt;br /&gt;records returned: 0&lt;br /&gt;Elapsed: 0.002231&lt;br /&gt;Z&gt; format xml&lt;br /&gt;Z&gt; show 1&lt;br /&gt;Sent presentRequest (1+1).&lt;br /&gt;Records: 1&lt;br /&gt;[coll]Record type: XML&lt;br /&gt;&lt;doc&gt;&lt;str name="id"&gt;3007WFP&lt;/str&gt;&lt;str name="name"&gt;Dell Widescreen UltraSharp 3007WFP&lt;/str&gt;&lt;int name="popularity"&gt;6&lt;/int&gt;&lt;/doc&gt;&lt;br /&gt;nextResultSetPosition = 2&lt;br /&gt;Elapsed: 0.008594&lt;br /&gt;Z&gt; quit&lt;br /&gt;&lt;br /&gt;Other components of the config file can be used to control the XML records returned, to convert SOLR records into MARC or to manage meta searching through the gateway, but thats a subject for next time.&lt;br /&gt;&lt;br /&gt;Happy meta-searching.&lt;/collection&gt;&lt;/repository&gt;&lt;/repository&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-2539610146569026181?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/2539610146569026181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=2539610146569026181' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/2539610146569026181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/2539610146569026181'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/05/exposing-solr-services-as-z3950-server.html' title='Exposing SOLR service(s) as a Z3950 server'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-5883394263298014848</id><published>2008-04-25T03:57:00.000-07:00</published><updated>2008-04-25T04:38:25.868-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><title type='text'>Convention (Profiles?) over Configuration for Repository Interoperability</title><content type='html'>*Brain dump warning*&lt;br /&gt;&lt;br /&gt;As noted elsewhere, I've been playing with Apache Jackrabbit to implement a Institutional Repository (like) system for general use. Initially, we're using it to host records created from an aggregation of UK Theatre Web, the Royal Opera House, Shakespeare Birthplace Trust and the National Theatre. Each performance, Artist, Contributor, Venue, Work is cross referenced and used to augment any existing records in order to create a harmonised historic record of performances in the UK. Theatre researchers want and need this augmented raw data (In XML and Marc format) but also want to search and browse. The bulk of the matching and deduplication work is done in a pretty hefty relational database structure and the Repository really does become a place to store and reference reusable artifacts.&lt;br /&gt;&lt;br /&gt;So, we ended up playing with a Jackrabbit based repository instead of fedora or dspace because we already have some pretty sophistocated search tools, and our database is the authoritative source of the data. Our repository is something that sits on the boundary of our system, as a public interface to the raw data instead of our application. It only needs to do one simple job. In deployment terms, we have a tomcat instance hosting a DB driven application, our repository app, a search index app and an OAI app. The data import process orchestrates transactions between these web services. So, after our workflow process has updated the database (Giving us a URL for a web based app page referencing the item), copies of the generated artifacts have been pushed up to the repository (Giving us a URL where the data can be obtained) we push the update up to our indexing service so the whole lot can be searched.... Which gives rise to the initial question:&lt;br /&gt;&lt;br /&gt;Back in the old days of Z39.50 we'd profile something like this and create a repository attribute and tag set. This means that anyone wanting to search "A repository" could be sure they didn't need to worry about whos implementation it was. In a solr environment for example, should there be a set of shared fields that all repositories support, I've started off with&lt;br /&gt;&lt;br /&gt;repository.item.pid - The persistent identifier of the repo item (I chose the fedora-like naming just to avoid making something new).&lt;br /&gt;repository.item.url  The URL of the item in a specific repo&lt;br /&gt;application.item.url - URL of a user-interface / application for the resolved item&lt;br /&gt;&lt;br /&gt;and then for good measure&lt;br /&gt;&lt;br /&gt;dc.title - So we have something to display&lt;br /&gt;and&lt;br /&gt;dc.itentifier - Just because.&lt;br /&gt;&lt;br /&gt;I wonder if there's any consensus that when you search an index service for items which may be found in a repository you should always be able to search on a field set named like this, and always be able to count on result records with agreed field names.&lt;br /&gt;&lt;br /&gt;In terms of protocols, this would be:&lt;br /&gt;&lt;br /&gt;Z3950 - Do we really want another attrset? repo-1? Probably the "Proper" way to go eg "@attr repo-1 1=1 PID" In terms of result records, we're looking at XML tags?&lt;br /&gt;SRW/SRU - repo context set? eg "repo.pid=xxx" again, in terms of result records, we're looking at a namespace for repository properties &lt;repo:pid&gt;xxx&lt;/repo:pid&gt;&lt;br /&gt;SOLR - Just some pre-agreed fields in the schema for both indexing and retrieval?&lt;br /&gt;Other protocols?&lt;br /&gt;&lt;br /&gt;My feeling is that if we're bothered about cross repository interoperability, then how other services like index,search,retrieval,harvest refer in an implementation independent way to the properties of a repository. I'll post something here shortly defining a CQL context set for repositories. In the interim, my SOLR fields relating to repository items are:&lt;br /&gt;&lt;br /&gt;field name="repository.item.pid" type="string" indexed="true" stored="true" required="false"&lt;br /&gt;field name="repository.item.url" type="string" indexed="false" stored="true" required="false"&lt;br /&gt;field name="repository.item.owner" type="string" indexed="true" stored="true" required="false" multivalued="true"&lt;br /&gt;field name="repository.item.deposit_user" type="string" indexed="true" stored="true" required="false" multivalued="true"&lt;br /&gt;field name="app.item.url" type="string" indexed="false" stored="true" required="false"&lt;br /&gt;I'll think about this some more and update / rewrite in english if this means anything to anyone&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-5883394263298014848?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/5883394263298014848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=5883394263298014848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5883394263298014848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5883394263298014848'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/04/convention-profiles-over-configuration.html' title='Convention (Profiles?) over Configuration for Repository Interoperability'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-8894269420965227996</id><published>2008-04-14T03:24:00.000-07:00</published><updated>2008-04-14T03:38:16.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jzkit'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><category scheme='http://www.blogger.com/atom/ns#' term='asn.1'/><title type='text'>I have this ASN.1 definition and this byte stream, can I use A2J?</title><content type='html'>I get about 1 email per week about this, and despite the fact that the docs are out there, for some reason people don't seem to be able to find them. So, if you have an ASN.1 definition file and need to encode/decode a byte stream from a device or some other source, here's how to do it with A2J.&lt;br /&gt;&lt;br /&gt;1. Get A2J. There are a couple of options. you can download the source code from http://developer.k-int.com/svn/a2j/a2j_v2/trunk/ and build it yourself, or follow the other approach, and use Maven, which is the approach I'll discuss here. The a2j libraries are available from the public maven2 repositories so there's no special download or setup, just add the following to the dependencies section in your project.pom file and the jar will be downloaded from one of the maven2 repositories:&lt;br /&gt;&lt;br /&gt;    &lt;dependency&gt; &lt;groupId&gt;org.jzkit&lt;/groupId&gt; &lt;artifactId&gt;a2j&lt;/artifactId&gt; &lt;version&gt;2.0.4&lt;/version&gt; &lt;/dependency&gt;&lt;br /&gt;&lt;br /&gt;2. You need to precompile the asn.1 definition into codec classes. Use the following plugin :&lt;br /&gt;&lt;br /&gt;      &lt;plugin&gt;&lt;br /&gt;        &lt;artifactId&gt;maven-antrun-plugin&lt;/artifactId&gt;&lt;br /&gt;        &lt;executions&gt;&lt;br /&gt;          &lt;execution&gt;&lt;br /&gt;            &lt;phase&gt;generate-sources&lt;/phase&gt;&lt;br /&gt;            &lt;goals&gt;&lt;br /&gt;              &lt;goal&gt;run&lt;/goal&gt;&lt;br /&gt;            &lt;/goals&gt;&lt;br /&gt;            &lt;configuration&gt;&lt;br /&gt;              &lt;tasks&gt;&lt;br /&gt;                &lt;echo&gt;Running ASN.1 Compliation - output to ${project.build.directory}/generated/main/java&lt;/echo&gt;&lt;br /&gt;                &lt;mkdir dir="${project.build.directory}/generated/main/java" /&gt;&lt;br /&gt;                &lt;taskdef classname="org.jzkit.a2j.codec.comp.A2JAntTask" classpathref="maven.compile.classpath" name="asn2java" /&gt;&lt;br /&gt;                &lt;echo&gt;Precompile Z39.50&lt;/echo&gt;&lt;br /&gt;                &lt;asn2java basePackage="org.jzkit.z3950.gen.v3" output="${project.build.directory}/generated/main/java" inputAsnFile="${basedir}/etc/z3950v3.asn" /&gt;&lt;br /&gt;                &lt;echo&gt;Precompile Character Set Negotiation&lt;/echo&gt;&lt;br /&gt;                &lt;asn2java basePackage="org.jzkit.z3950.gen.v3" output="${project.build.directory}/generated/main/java" inputAsnFile="${basedir}/etc/charset.asn" /&gt;&lt;br /&gt;              &lt;/tasks&gt;&lt;br /&gt;              &lt;sourceRoot&gt;${project.build.directory}/generated/main/java&lt;/sourceRoot&gt;&lt;br /&gt;            &lt;/configuration&gt;&lt;br /&gt;          &lt;/execution&gt;&lt;br /&gt;        &lt;/executions&gt;&lt;br /&gt;        &lt;dependencies&gt;&lt;br /&gt;          &lt;dependency&gt;&lt;br /&gt;            &lt;groupId&gt;com.sun&lt;/groupId&gt;&lt;br /&gt;            &lt;artifactId&gt;tools&lt;/artifactId&gt;&lt;br /&gt;            &lt;version&gt;1.4&lt;/version&gt;&lt;br /&gt;            &lt;scope&gt;system&lt;/scope&gt;&lt;br /&gt;            &lt;systemPath&gt;${java.home}/../lib/tools.jar&lt;/systemPath&gt;&lt;br /&gt;          &lt;/dependency&gt;&lt;br /&gt;        &lt;/dependencies&gt;&lt;br /&gt;      &lt;/plugin&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Obviously, replace input_file with your input file, and the base package with whatever java package you want to use. This will generate a load of java stubs that can process and input and output byte streams defined by the asn.1 specification. Am exanple pom can be found here: http://developer.k-int.com/svn/jzkit/jzkit3/trunk/jzkit_z3950_plugin/pom.xml &lt;br /&gt;&lt;br /&gt;3. I want to read bytes from an input stream. Again, you can copy code from jzkit3, specifically, http://developer.k-int.com/svn/jzkit/jzkit3/trunk/jzkit_z3950_plugin/src/main/java/org/jzkit/z3950/util/ZEndpoint.java but the abbreviated version:&lt;br /&gt;&lt;br /&gt;   while(running) {&lt;br /&gt;      try {&lt;br /&gt;        log.debug("Waiting for data on input stream.....");&lt;br /&gt;        BERInputStream bds = new BERInputStream(incoming_data, charset_encoding,DEFAULT_BUFF_SIZE, reg);&lt;br /&gt;        PDU_type pdu = null;&lt;br /&gt;        pdu = (PDU_type)codec.serialize(bds, pdu, false, "PDU");&lt;br /&gt;        log.debug("Notifiy observers");&lt;br /&gt;&lt;br /&gt;        notifyAPDUEvent(pdu);&lt;br /&gt;&lt;br /&gt;        log.debug("Yield to other threads....");&lt;br /&gt;        yield();&lt;br /&gt;      }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;incoming_data is an input stream, charset_encoding is a Character Set, reg is the OID register than can be used to identify any externals / other OID's appearing in the data.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-8894269420965227996?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/8894269420965227996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=8894269420965227996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/8894269420965227996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/8894269420965227996'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/04/i-have-this-definition-and-this-byte.html' title='I have this ASN.1 definition and this byte stream, can I use A2J?'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-3134257966492961652</id><published>2008-04-05T04:03:00.001-07:00</published><updated>2008-04-05T04:32:20.037-07:00</updated><title type='text'>Jackrabbit Repositories, DUT3 - Data Upload Tool and now Custprops-RDF</title><content type='html'>A blog post as much for myself so I don't forget where I'm up to as anything else, and also an upadte on building a repository on top of apache Jackrabbit.&lt;br /&gt;&lt;br /&gt;I'd got almost to the finish line with an Apache Jackrabbit based repository, and was full of excitement about the JSR repository specification, which (In kind words mode) seemed to parallel and predate much of the thinking currently being done in repositories. At the last step, I wanted to take a few OAI sources and the Marc records from the OpenLibrary project and inject them into the repo to test the storage and event mechanisms, and by implication, test the SOLR indexer which fires on submission events.&lt;br /&gt;&lt;br /&gt;We've had a bit of software hanging around since the early days of the &lt;a href="http://cplis.shef.ac.uk/sypolbrief.htm"&gt;IT For Me&lt;/a&gt; project which we installed in local and regional authorities and libraries. This kit, dubbed the "Data Upload Tool" had loads of plugins for talking to access database, Excel spreadsheets, directories of documents, etc which converted these heterogeneous data sources into a common schema and uploaded metadata, and possibly digital artifacts to the IT For Me Repository using a proprietary upload service. Since then, we've had the emergence of content packaging, which we looked at for making the metadata/artifacts uploading cleaner, and now &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/SWORD"&gt;SWORD&lt;/a&gt; which we've used to replace the proprietary API. This means anyone with authentication can submit data to projects like IT For Me (In this case, for any authority to share Community Information and Service Records) or digitisation projects to submit records to the MLA funded peoples network &lt;a href="http://wwww.peoplesnetwork.gov.uk/discover"&gt;Discover&lt;/a&gt; service. This has been a great step forward for the Data Upload Tool but when I tried to use data upload tool to harvest an OIA collection, and the SWORD publish the records into my new repository, I fell foul of the workflow issues. DUT, great as it was, is too rigid. We needed something a bit more graphical in the vein of a workflow engineering tool. So I've had a brief diversion to work on DUT3 - Data Upload Tool v3 which is looking pretty neat.&lt;br /&gt;&lt;br /&gt;BUT, whilst working on DUT3 it became apparent that there were so many objects the time had come to bite the bullet and embed a database instead of storing all the data in props files. Hmmm.. Heterogeneous plugin configuration and storage? Well certainly, the expressiveness of RDF is quite useful, but I like my relational databases.&lt;br /&gt;&lt;br /&gt;This led to an evolution of our opensource custprops library. Often with any software product there is the need to be able to extend the base datamodel in the implementation phase. Users need to be able to store their own widget number along side an application object. Custprops takes an RDF-like model using URI based property definitions and extends hibernate objects with an extra properties map that can be used to define and store arbitrary additional data elements. The only problem now is that we have 2 api's for getting at the data. Of course the logical next step was to map the bean properties on to URI properties. Now we have a system that lets you set properties on an object and if they are a part of the standard relational model, they get directed to the standard database tables, if not, they go down the custprops route. Collections of objects work in a similar vein, although known relations have to be constrained by the underlying database model. COOL! an extensible relational schema in (limited) spirit of RDF. Hmm..&lt;br /&gt;&lt;br /&gt;OK, so we look at this development and see the recent &lt;a href="http://www.w3.org/TR/rdf-testcases/"&gt;RDF Test Cases&lt;/a&gt; why not write some test cases for this? See if we can load some ontologies into the schema and map them. First test case we hit this example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;test:PositiveParserTest rdf:about="http://w3.example.org/test001"&gt;&lt;br /&gt;&lt;br /&gt;   &lt;test:issue rdf:resource="http://w3.example.org/rdf-tracking/#example1" /&gt;&lt;br /&gt;   &lt;test:status&gt;APPROVED&lt;/test:status&gt;&lt;br /&gt;   &lt;test:approval rdf:resource="http://rdfcore.example.org/archives/001.html" /&gt;&lt;br /&gt;   &lt;test:description&gt;&lt;br /&gt;    This is a simple positive parser test example.&lt;br /&gt;   &lt;/test:description&gt;&lt;br /&gt;&lt;br /&gt;   &lt;test:inputDocument&gt;&lt;br /&gt;      &lt;test:RDF-XML-Document rdf:about="http://w3.example.org/test001.rdf" /&gt;&lt;br /&gt;   &lt;/test:inputDocument&gt;&lt;br /&gt;&lt;br /&gt;   &lt;test:outputDocument&gt;&lt;br /&gt;      &lt;test:NT-Document rdf:about="http://w3.example.org/test001.nt" /&gt;&lt;br /&gt;   &lt;/test:outputDocument&gt;&lt;br /&gt;&lt;br /&gt;   &lt;test:warning&gt;Some parsers may produce a warning when running this test&lt;/test:warning&gt;&lt;br /&gt;&lt;br /&gt;&lt;/test:PositiveParserTest&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;All looks good.. apart from that status=APPROVED element. That sucks. In our relational model, we want some form of reference data table (Either specific to status, or a shared status entity). I don't want to store the damn string status, thats just not in the spirit of the relational model. So, it looks like the thing to do is to write into the mapping configuration a mechanism to try and resolve values to a related entity instead of storing the value itself. If we do it right, we can codify the use cases (Create if non exists, error if non exists, etc) and do a similar job on the output end. Even better, it should be possible to write, for example custom matchers like AACR name matching to have a go at de-duplication. I'm not sure yet if we want to go so far as structures for storing possible matches and asking for user clean-up later on. Such functions would certainly be useful to projects like the TIG (Theater Information Group) gateway.&lt;br /&gt;&lt;br /&gt;*end waffle* back to custprops.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-3134257966492961652?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/3134257966492961652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=3134257966492961652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/3134257966492961652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/3134257966492961652'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/04/jackrabbit-repositories-dut3-data.html' title='Jackrabbit Repositories, DUT3 - Data Upload Tool and now Custprops-RDF'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-6234357333688096349</id><published>2008-03-19T06:30:00.000-07:00</published><updated>2008-03-19T06:57:16.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jackrabbit'/><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><title type='text'>Apache Jackrabbit as an [Institutional|Cultural|Learning Object] Repository</title><content type='html'>Over the past months I've looked at dspace and fedora and played with both in a pretty serious way. The goal was to determine if we could *relly* use standard IR (Institutional Repo, as opposed to Information Retrieval) software to hold collections of IMS and ieee-LOM (Learning Object Metadata) records, and Peoples Network Cultural records (PNDS-Dublin Core Application Profile) as well as the E20CL (Exploring 20th Century London). The real driver here was that it might be possible to dump our existing OAI code and just use existing solutions. The brick wall in all cases came for me when I tried to integrate the repository "Blob" with our rich domain models for each schema type. Ideally, using repository workflow, I can pass on these blobs to domain specific subsystems that can do real application work with the items. I gave up on integrating with despace and fedora for LOM and cultural items (And now bibliographic resources too). In the end, we created our own repository which made it much easier to integrate with backend domain models.&lt;br /&gt;&lt;br /&gt;I first looked at apache jackrabbit and the JSR dealing with content repositories a year or so ago, and decided it wasn't mature enough. David Flanders observation that Content Management companies were at the JISC OSS-Watch event and that IR's should "Watch Out" got me thinking about jackrabbit again. Thing is, IMNSHO, Current content management systems are as much vertical applications as IR's are. The trouble I had *usefully* getting non-IR resources into dspace and fedora (IE, it's very doable at the proof-of concept phase, but after that the 80/20 law quickly takes over) is going to be exactly the same issue content management providers have forcing the square peg of article prints into their web-site round hole. Of course everyone claims to have a "Generic Model" but they seldom are. In these days of rapid development, keeping a pure abstract model intact is difficult indeed.&lt;br /&gt;&lt;br /&gt;Apache jackrabbit turns this on it's head a bit for me. Instead of being  vertical application trying to spread out horizontally into new domains, it's nothing but a horizontal service thats entirely domain neutral. There's no danger of domain specifics creeping into the model, as there's no application to support directly, only repository services.&lt;br /&gt;&lt;br /&gt;So, my new lunchtime project is to re-visit Apache Jackrbbit. It looks a whole lot more useable than it did a year ago, and I think the question I want to answer is can a horizontal tool like jackrabbit have vertical OAI-PMH (Superficially to me, Jackrabbit looks like it will fit the OAI-ORE model very tightly) and SRW/SRU services added to make it behave functionally well in the vertical sectors of Institutional, Cultural and Learning Object repositories. If so, Jackrabbit already has many of the features Jisc CRIG is talking about IR's really needing (Events, Security, etc) and I suspect it could be a real worthwhile approach. Although the startup time won't be as fast as domain specific tools, the developer resource and wealth of existing mature software give longer term benefits.&lt;br /&gt;&lt;br /&gt;Having said all that, getting started with jackrabbit is a bit of a curve. The docs and samples seem to be geared to those wishing to improve the horizontal framework. What I needed was a vertical application developer guide for jackrabbit. Over the next few days I'm going to try and invest my lunchtime play hour in documenting the application of jackrabbit to a vertical domain, with specific emphasis on support for OAI-PMH and OAI-ORE. If you're interested, a maven2 pom file that has all the needed dependencies for my vertical test is here: http://developer.k-int.com/svn/default/sandbox/repo/jackrabbit/pom.xml and a sample unit test that creates a stand alone repository is here: http://developer.k-int.com/svn/default/sandbox/repo/jackrabbit/src/test/java/com/k_int/repository/test/RepoTest.java Tomorrows job is unpicking the core authentication mechanism and trying to get some objects in (I've got some LOM records, Marc records, Dublin Core, a pdf and some gifs, so thats a good starter set I reckon).&lt;br /&gt;&lt;br /&gt;Watch this space :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-6234357333688096349?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/6234357333688096349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=6234357333688096349' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/6234357333688096349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/6234357333688096349'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/03/apache-jackrabbit-as-institutional.html' title='Apache Jackrabbit as an [Institutional|Cultural|Learning Object] Repository'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-7376129025455381662</id><published>2008-02-04T06:27:00.000-08:00</published><updated>2008-02-04T06:34:40.345-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RepositoryChallenge'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><title type='text'>Looking forwards to OR08 April 1st and the Repository Challenge</title><content type='html'>Been thinking about OR08 and the Repository Challenge. Having been involved with a few code-fests in the past, I'm not too sure about the idea of throwing a load of stuff up in the air on the day and seeing which group of developers it lands on and what happens. Particularly, questions of managing the teams, build processes and code sharing all raise practical issues. In the past with code-fests this was less of a problem as usually projects were 90% their own code, and the whole build tree could be shipped around. These days, with so many projects being 5% own code, 95% reuse of other components the issues of configuration management are that much greater. And thats before we get onto required server infrastructure.&lt;br /&gt;&lt;br /&gt;I reckon the people who are going to come out of the repository challenge are likely to be those who go with a pretty well defined goal and some infrastructure that lets developers hit the ground running working on the actual problems instead of worrying about the logistics of such an event.&lt;br /&gt;&lt;br /&gt;Initially, the repository events api is one that interests me. Having recently finished a solr based indexing component, but having needed to hard-wire that into our lom repository component. It would have been great to be able to just subscribe the indexing service to the repository and let it run. So I'm thinking it might be worth doing a bit of pre-work on a repository events demonstrator, probably with a SOLR based indexing component as a proof of concept. Anyone interested drop me a line :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-7376129025455381662?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/7376129025455381662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=7376129025455381662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7376129025455381662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7376129025455381662'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/02/looking-forwards-to-or08-april-1st-and.html' title='Looking forwards to OR08 April 1st and the Repository Challenge'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-5425536133895626431</id><published>2008-02-04T03:30:00.000-08:00</published><updated>2008-11-13T03:20:29.449-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LOM'/><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='eLearning'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><category scheme='http://www.blogger.com/atom/ns#' term='JISC-CRIG-2007'/><title type='text'>MLA's cultural learning objects project - seamless SRW, OAI,  Sword and LOM</title><content type='html'>in late 2007 MLA, the council for Museums, Libraries and Archives commissioned a forward looking project to support the re-purposing of cultural resources as learning objects. Their rational being that the MLA's extensive collection of cultural resources were of value to the learning community. What follows is a brief description of how MLAs choices to use standards based interfaces and open source components has allowed us to integrate several resources and technologies to rapidly provide a standards based solution. Having attended the &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/CRIG"&gt;JISC CRIG&lt;/a&gt; &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/CRIG_Unconference"&gt;Unconference&lt;/a&gt;, &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/SWORD"&gt;SWORD&lt;/a&gt; seemed the be the natural replacement for the legacy soap and ftp services which used to be used to upload LOM records to the curriculum online repository.&lt;br /&gt;&lt;br /&gt;Overview&lt;br /&gt;&lt;br /&gt;The solution essentially uses &lt;a href="http://www.loc.gov/standards/sru/"&gt;SRW&lt;/a&gt; to harvest descriptive records and unique identifiers from the Peoples network discover service (Using the restful web service interface). These brief results are presented to the user. The user selects the records they wish to create LOM descriptions for and hit the download button. The tagging tool looks at each record and decides the best way to obtain the full original source record. In this case, submitting a unique identifier back to the source OAI service (As the discover service only contains brief descriptive records). The source record is retrieved and an appropriate XSL transformation applied to convert it into the lom schema, as fully populated as we can manage. The user then opens the file in the tagging tool propper where validation forces them to manually complete the fields needed for the selected lom profile. Finally, the user selects the upload option which uses the SWORD client libraries to submit the LOM document to a LOM metadata repository.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6b3mhn_VrI/AAAAAAAAAB8/Dx88SgccodY/s1600-h/tt-startup.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6b3mhn_VrI/AAAAAAAAAB8/Dx88SgccodY/s320/tt-startup.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163086264060040882" /&gt;&lt;/a&gt;&lt;br /&gt;#1 Tagging tool startup. The user is prompted for their sword username and password, along with other personal information that can be defaulted in to the created LOM records.&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VgrZEWCaxtk/R6b7Jxn_VsI/AAAAAAAAACE/43jMRSHuvHM/s1600-h/tt-empty-doc.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_VgrZEWCaxtk/R6b7Jxn_VsI/AAAAAAAAACE/43jMRSHuvHM/s320/tt-empty-doc.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163090168185312962" /&gt;&lt;/a&gt;&lt;br /&gt;#2 The tagging tool starts up and presents the user with an empty LOM document that can be used for authoring from scratch.&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/R6b7bRn_VtI/AAAAAAAAACM/D_Tcxx3qD4k/s1600-h/tt-search-panel.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/R6b7bRn_VtI/AAAAAAAAACM/D_Tcxx3qD4k/s320/tt-search-panel.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163090468833023698" /&gt;&lt;/a&gt;&lt;br /&gt;#3 User selects Discover from the main menu allowing them to search remote SRW repositories.&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6b96hn_VuI/AAAAAAAAACU/j-iw96V3PWo/s1600-h/tt-search-results.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6b96hn_VuI/AAAAAAAAACU/j-iw96V3PWo/s320/tt-search-results.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163093204727191266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;#4 Search results. The user is allowed to select search results for download and conversion into lom.&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6caNRn_VvI/AAAAAAAAACc/p3viP0z4iOg/s1600-h/tt-edit-downloaded-rec.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6caNRn_VvI/AAAAAAAAACc/p3viP0z4iOg/s320/tt-edit-downloaded-rec.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163124313175316210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VgrZEWCaxtk/R6cavBn_VxI/AAAAAAAAACs/3uv9-rpy_ME/s1600-h/tt-fill-in-mandatory-fields.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_VgrZEWCaxtk/R6cavBn_VxI/AAAAAAAAACs/3uv9-rpy_ME/s320/tt-fill-in-mandatory-fields.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163124892995901202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VgrZEWCaxtk/R6ca2xn_VyI/AAAAAAAAAC0/msKOBOcdjSI/s1600-h/tt-fill-in-mandatory-classification.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_VgrZEWCaxtk/R6ca2xn_VyI/AAAAAAAAAC0/msKOBOcdjSI/s320/tt-fill-in-mandatory-classification.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163125026139887394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;#5 The user edits the newly created lom document. Missing mandatory fields are highlighted and defaults applied where possible. The user is supported in selecting controlled classification fields from managed ZThes files.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6cctRn_VzI/AAAAAAAAAC8/rjqHM0pho2s/s1600-h/tt-deposit-services.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_VgrZEWCaxtk/R6cctRn_VzI/AAAAAAAAAC8/rjqHM0pho2s/s320/tt-deposit-services.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5163127061954385714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;#6 Finally the user selects the upload menu option and the file is delivered to the configured repository using the sword cliet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-5425536133895626431?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/5425536133895626431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=5425536133895626431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5425536133895626431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5425536133895626431'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2008/02/mlas-cultural-learning-objects-project.html' title='MLA&apos;s cultural learning objects project - seamless SRW, OAI,  Sword and LOM'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VgrZEWCaxtk/R6b3mhn_VrI/AAAAAAAAAB8/Dx88SgccodY/s72-c/tt-startup.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-7490234741284526161</id><published>2007-12-12T01:52:00.000-08:00</published><updated>2008-02-04T06:19:02.940-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='SOLR'/><category scheme='http://www.blogger.com/atom/ns#' term='JISC'/><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><category scheme='http://www.blogger.com/atom/ns#' term='jisc-crig-unconference-2007'/><category scheme='http://www.blogger.com/atom/ns#' term='JISC-CRIG-2007'/><title type='text'>JISC CRIG #2 - An Undiscovered Scenario?</title><content type='html'>I'm pretty sure one of the agendas it was hoped I would push at the CRIG &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/CRIG_Unconference"&gt;Unconference&lt;/a&gt; was the libraries / search one. More specifically, the scenario "I'm a librarian, and I want to see results from the institutional repository in my OPAC". There are tons of variations on this one, but it boils down to the exposing of repository items in a way that is compatible with existing search services. I never really made it as far as putting that on a sheet of paper, mostly because I was trying to engage in other discussions and arrive at a common point where we could discuss this. Some of the barriers to discussing this use case.....&lt;br /&gt;&lt;br /&gt;1) The word repository... it has at least two different meanings just in terms of being "A container you can put stuff in". It can be metadata, digitial items, content packages, etc. We started from the useful perspective of "It doesn't matter, it's still just a repository" but from the perspective of an OPAC, it certainly does matter to me. It matters even more if from all scenarios you want to be able to provide 1-click access to the actual resource. Perhaps if it doesn't matter what kind of repository it is, we need to be more specific about the classes of item we can put in a repository. &lt;br /&gt;&lt;br /&gt;2) Metadata, packages, disaggregation... The "What sort of stuff is in a repository" issue starts to raise fundamental questions about content disaggregation. If we think of the base item, for example a PDF of a paper, as being the actual item we want to give people access to, then we need to ask, how does a specific metadata record become attached to that item, is it via a content package, or via loose coupling URI references. I'm a programmer and I like loose coupling. The upshot of loose coupling however is that our opac really needs to access metadata repositories that can point at content repositories. Repositories of content packages can submit their metadata components for indexing, but that metadata is typically poor. &lt;br /&gt;&lt;br /&gt;3) What word do we use for the thing that takes the metadata records, builds and maintains a searchable index. At times the word repository has been used by different communities, but thats right out now I reckon. Search index has specific meaning in the IR community, so thats out. I've heard "Searchable Repository" but I think that muddies the water. (Search is a repository service, I would seriously have to suggest muddies the already murky waters). There is certainly a need for this indexing component that takes content-metadata records (Whatever the source) and points at content repositories containing the actual item.&lt;br /&gt;&lt;br /&gt;4) SOLR is great but..... when SOLR people talk about federated search they mean federated amongst SOLR instances. There are already well established protocols for remote search. I really wish the SOLR people would quit trying to create a new defacto standard "SOLR search via URI and XML presentation" and adopt one of the more standard ones. I'd personally love it to be SRW but OpenSearch would be good too. I tried to engage the SOLR community and offered to work on the SRW adapter but there was absolutely no interest. Whilst I appreciate the "Just do it" nature of open source, it was incredibly hard to gain traction on this. One of the reasons for this is that SOLR has lots of really nice extensions for hit-highlighting and results categorisation that aren't present in other protocols. But many search services don't support those features. Thats one of the harder things about federated search, but just using a proprietary protocol is putting off the problem until, as we say, your librarian simply wants to Z39.50 or SRW cross search the Institutional repository content alongside the catalog holdings.&lt;br /&gt;&lt;br /&gt;Anyway, all that aside, I just want there to be a way to see an SRW or Z39.50 service which will supply me appropriately profiled metadata records pointing me at the actual resource (Physical or Electronic). I guess thats a challenge. The SOLR SRW project seems like an important one to me in this context, maybe the time has come to try and revive it. A good first step would certainly be the "Explain function" for repositories, which would give us a way to profile standard metadata schemes and access points against the ad-hoc indexes and metadata schemes we find in most SOLR indexes.&lt;br /&gt;&lt;br /&gt;So, some use cases:&lt;br /&gt;&lt;br /&gt;There is a PDF on "The effects of IR spectrum light on bacterial growth" in a content repository, it has a descriptive entry in a metadata repository, how do I enable an actor typing an appropriate query into their opac to see a the descriptive record of sufficient quality to enable them to judge it of interest and retrieve the digital item (Lets leave aside appropriate copy and authentication for now).&lt;br /&gt;&lt;br /&gt;There's an item in a well structured web-site containing an animated gif of a transverse wave. For lecturers teaching sound engineering, the resource is considered an ideal supplement for wave-mechanics lectures. How do we enable actors to find and use this resource. Actually, this leads into a second more interesting scenario.. that of the old JISC concept of "Search landscapes". Does our "Sound engineering student" want their search landscape to be "The Opac, The Institutional Repository, my course repository (Containing more specific materials), and my lecturers X,Y and Z repository. How do we enable the actor to locate and select the searchable indexes (And the current awareness feeds for that matter). In this case of course, there is a metadata record, but no item in a content repository.&lt;br /&gt;&lt;br /&gt;Finally, there's the case of a known item in a content repoisitory with no metadata description? I think this UC basically just pulls in the auto metadata creation UC and we go from there?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well that was a bit cathartic, and way too long but hey.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-7490234741284526161?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/7490234741284526161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=7490234741284526161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7490234741284526161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/7490234741284526161'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2007/12/jisc-crig-2-undiscovered-scenario.html' title='JISC CRIG #2 - An Undiscovered Scenario?'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-5350233841914871579</id><published>2007-12-10T03:03:00.000-08:00</published><updated>2007-12-12T02:37:14.675-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JISC'/><category scheme='http://www.blogger.com/atom/ns#' term='Repositories'/><category scheme='http://www.blogger.com/atom/ns#' term='CRIG'/><category scheme='http://www.blogger.com/atom/ns#' term='jisc-crig-unconference-2007'/><category scheme='http://www.blogger.com/atom/ns#' term='JISC-CRIG-2007'/><title type='text'>JISC CRIG Unconference #1 - The Meta Stuff</title><content type='html'>Just back from the &lt;a href="http://www.ukoln.ac.uk/repositories/digirep/index/CRIG_Unconference"&gt;JISC CRIG Unconference&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wow!&lt;br /&gt;&lt;br /&gt;I think that about covers it. I have to completely take my hat off to the CRIG Support team for the sheer bravery in innovation they've shown with the unconference approach. The event was hugely fun, even if quite draining, and I think practice for all involved can only improve the outputs of these kinds of events in the future. JISC should take the support team and give them a huge pat on the back for their work here.&lt;br /&gt;&lt;br /&gt;From a personal perspective, I found the unconference process entirely charming. As someone who quite seriously studied Stafford Beer and Organisational Cybernetics experiencing the unconference was like living in the pages of &lt;a href="http://www.amazon.co.uk/Beyond-Dispute-Syntegrity-Cybernetics-Organization/dp/0471944513/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1197284964&amp;sr=8-2"&gt;Beyond Dispute&lt;/a&gt; What follows is more for my own benefit and memory, but may be of interest I suppose. The result of what I know as the "problem jostle" generated some variety, although a few soap-boxes did seem to skew the work. The team did a great job of assembling enough variety of backgrounds to try and get some emergent activity. I think there needed to be a little more attenuation and coordination as a result of the initial problem jostle, there were terms that needed to be harmonized and some topics that I think probably needed to be toned down. To this end, I think it might have been fun to have a "System 2" (In terms of the VSM) board somewhere in the room, a board where we can scribble common definitions, and other coordinative activity. Again, one slight problem with the coordinative activity is that it all seemed to take place in the heads of the facilitators, which is sort of what you want when freeing the participants to think about their areas, but it did raise the slight spectre of agenda setting. In part I think this is a danger of the facilitators having expert domain knowledge. Although I'm not at all complaining, I think the team did a great job. The balloons, apparently functioning as some kind of parasympathetic channel, didn't really work I don't think. I can see where it might work in the US, but there were too many british sensitivities preventing them being useful. Actually, this is a pity because there was a need for some mechanism like this. I think if the participants had more time to gel before the actual event, it might have been less of an issue (Then again, it might have been more of an issue). Overall, the outputs seemed to be quite rich, although there didn't seem to be quite as much new variety as I expected.&lt;br /&gt;&lt;br /&gt;Well thats enough meta-conference for now, on to the details....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-5350233841914871579?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/5350233841914871579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=5350233841914871579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5350233841914871579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5350233841914871579'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2007/12/jisc-crig-unconference-1-meta-stuff.html' title='JISC CRIG Unconference #1 - The Meta Stuff'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1509353312012566370.post-5245230389239061080</id><published>2007-08-22T04:48:00.000-07:00</published><updated>2007-08-22T05:05:07.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenRequest'/><title type='text'>OpenRequest3 Beta2</title><content type='html'>OpenRequest3 beta2 is completed today.&lt;br /&gt;&lt;br /&gt;OpenRequest3 is the next major revision of an open source system for resource sharing. Initially, the project was devised to quickly enable smaller Library Management System vendors to provide ISO ILL messaging capabilities. In version 2, additions were made for very large scale operations wanting to replace their legacy messaging infrastructure. OpenRequest3 adds web service API's for managing the request process, and a native web application that can be used out of the box to participate in resource sharing networks. Although the system started out life as a java toolkit project to support ISO 10161 and ISO 10160 ILL messaging, it has evolved into a service component capable of integrating with any host system capable of talking web services (WSDL is used to define the interface). At the same time, the back end has evolved into an engine capable of integrating with many different messaging protocols including generic script, simple email and email with web-links.&lt;br /&gt;&lt;br /&gt;Beta2 adds the following:&lt;br /&gt;&lt;br /&gt;OR-Infrastructure&lt;br /&gt;* Embedded Tomcat for web services and native web application&lt;br /&gt;&lt;br /&gt;OR-API&lt;br /&gt;* Web service support for creating new locations and endpoints from host systems&lt;br /&gt;* Web service support for location inbox monitoring&lt;br /&gt;* Web service support for marking messages read&lt;br /&gt;* Web service support for create request&lt;br /&gt;* Web service support for shipped&lt;br /&gt;* Web service support for cancel &lt;br /&gt;&lt;br /&gt;OR-Web Application&lt;br /&gt;* End user registration &lt;br /&gt;* End user location creation&lt;br /&gt;* End user requesting&lt;br /&gt;* User home page listing user locations&lt;br /&gt;* View location&lt;br /&gt;* View transactions&lt;br /&gt;* Bulk action transactions&lt;br /&gt;&lt;br /&gt;OpenRequest3 can be used in three distinct ways&lt;br /&gt;&lt;br /&gt;1) Simply as a protocol library. The jar contains all the basic BER routines to encode and decode ISO 10161 protocol messages. If you just need to be able to do ISO messaging, this library takes the leg work out of the encoding process. Nobody really uses the library in this form to the best of our knowledge.&lt;br /&gt;&lt;br /&gt;2) As a protocol engine or ILL ASE (Application Service Environment) OpenRequest takes care of sending, receiving, and storing ILL messages. Client applications (The HOST LMS most often) talks to the engine via and API to arrange for messages to be sent and to pick up notifications of incoming events. In OpenRequest2 this was done with java RMI or database integration. OpenRequest3 adds WebServices interfaces that can be called locally or remotely. OR3 also now uses tomcat in embedded mode, so setup and installation is greatly simplified.&lt;br /&gt;&lt;br /&gt;3) In order to ease testing, there is an OpenRequest web application. Users can simply use this application out of the box to manage locations, send and receive requests, or to check location/transaction/message status. Developers find the webapp useful for getting going with the protocol, slowly replacing the web interface features with calls to their own host system. Other users may wish to simply rebrand the web application and just use it out of the box to provide a fully working resource sharing messaging system in just a few minutes.&lt;br /&gt;&lt;br /&gt;Contact ian dot ibbotson at k hypen int dot com for more information and access to the test system. Source can be downloaded from the knowledge integration subversion system, snapshot builds uploaded to the maven2 repository.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1509353312012566370-5245230389239061080?l=k-int.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://k-int.blogspot.com/feeds/5245230389239061080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1509353312012566370&amp;postID=5245230389239061080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5245230389239061080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1509353312012566370/posts/default/5245230389239061080'/><link rel='alternate' type='text/html' href='http://k-int.blogspot.com/2007/08/openrequest3-beta2.html' title='OpenRequest3 Beta2'/><author><name>Ibbo</name><uri>http://www.blogger.com/profile/10177673211001672423</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_VgrZEWCaxtk/SOIoVjR3O_I/AAAAAAAAAGY/8DBgQKa-G7g/S220/11095851.jpg'/></author><thr:total>0</thr:total></entry></feed>
