<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-21005140</atom:id><lastBuildDate>Tue, 22 Dec 2009 23:27:31 +0000</lastBuildDate><title>The Wallace Line</title><description></description><link>http://thewallaceline.blogspot.com/</link><managingEditor>noreply@blogger.com (chris wallace)</managingEditor><generator>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-6936599472754531537</guid><pubDate>Sun, 24 May 2009 16:03:00 +0000</pubDate><atom:updated>2009-05-24T18:36:21.239+01:00</atom:updated><title>Weather Data on the Web</title><atom:summary type='text'>In preparation for our cruise up to Scotland this summer, I'm setting up some SMS services so I can get weather reports on board, provided we're in mobile phone range.  This is based on the two-way service rented from Clickatell.  I recently rewrote a PHP/MySQL router which routes MO calls to an application based on the first word of the message, and returns the reply, if any, to the originator.</atom:summary><link>http://thewallaceline.blogspot.com/2009/05/weather-data-on-web.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-6034558301719064905</guid><pubDate>Wed, 13 May 2009 18:56:00 +0000</pubDate><atom:updated>2009-05-13T20:16:11.111+01:00</atom:updated><title>Twitter Radio</title><atom:summary type='text'>Thought I'd try to get my XQuery Twitter Radio application going to listen to the tweets from the Mark Logic conference.  It's only a simple script, requires Opera with Voice enabled and uses http-equiv="refresh" to refresh the page.  It only works if the window is active, so it rather limits my use of the computer - just need another to run the radio I guess. If I wasn't marking, I'd write an </atom:summary><link>http://thewallaceline.blogspot.com/2009/05/twitter-radio.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-9053493105371338202</guid><pubDate>Wed, 06 May 2009 06:56:00 +0000</pubDate><atom:updated>2009-05-06T10:31:09.056+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>XQuery</category><category domain='http://www.blogger.com/atom/ns#'>exist</category><title>Matching sequences in XQuery</title><atom:summary type='text'>Collation is a core algorithm in processing sequences. In XQuery, the straight-forward expression of the algorithm is as a recursive function:declare function local:merge($a, $b  as item()*)         as item()* {    if (empty($a) and empty($b))    then ()    else if (empty ($b) or $a[1] lt $b[1])    then  ($a[1], local:merge(subsequence($a, 2), $b))    else  if (empty($a) or $a[1] gt $b[1])    </atom:summary><link>http://thewallaceline.blogspot.com/2009/05/matching-sequences-in-xquery.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-7825894116500219895</guid><pubDate>Fri, 01 May 2009 16:10:00 +0000</pubDate><atom:updated>2009-05-01T17:28:16.491+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>xquery exist</category><title>More XQuery performance tests</title><atom:summary type='text'>I noticed this morning that Dan had added an alternative implementation to an article in the XQuery Wikibook on matching words against a list.  It got me wondering which implementation was preferable.  I wrote a few tests and was surprised at the result. My initial implementation based on element comparisons was five times slower than comparing with a sequence of atoms, and Dan's suggestion of </atom:summary><link>http://thewallaceline.blogspot.com/2009/05/more-xquery-performance-tests.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-3893961577628741877</guid><pubDate>Mon, 27 Apr 2009 20:09:00 +0000</pubDate><atom:updated>2009-04-28T08:00:32.875+01:00</atom:updated><title>XQuery Unit Tests</title><atom:summary type='text'>I had a fright last week - Wolfgang asked for a copy of the test harness I'd used to evaluate different implementations of a lookup table.  This is code I wrote some time ago, tinkered with, good enough for our internal use but ...  well pretty bad code. I have to confess here that as a lone XQuery programmer, my code doesn't get the level of critique it needs.  The Wikibook has been </atom:summary><link>http://thewallaceline.blogspot.com/2009/04/xquery-unit-tests.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-2470093239657400736</guid><pubDate>Sat, 18 Apr 2009 23:27:00 +0000</pubDate><atom:updated>2009-04-20T07:55:38.271+01:00</atom:updated><title>Implementing a table look-up in XQuery</title><atom:summary type='text'>Handling temporary XML fragments in the eXist XML db has improved markedly in version 1.3.  I have been looking again at an example of processing MusicXML documents which I first wrote up in the XQuery wikibook.  The code requires a translation from the note name (A, B) to the midi note value for each note. The pitch of a note is defined by a structure like:  &lt;pitch&gt;     &lt;step&gt;C&lt;/step&gt;     &lt;alter</atom:summary><link>http://thewallaceline.blogspot.com/2009/04/implementing-table-look-up-in-xquery.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-7141759787063976645</guid><pubDate>Wed, 08 Apr 2009 06:06:00 +0000</pubDate><atom:updated>2009-04-17T15:48:51.604+01:00</atom:updated><title>XQuery module for Geodesy</title><atom:summary type='text'>I wrote my first attempt at Mercator ~ Latitude/Longitude conversion functions about 2 years ago when working in a case study for SPA2007.  Part of this was documented in the XQuery Wikibook article on UK bus stops and Ordnance Survey coordinates. At the time I did not appreciate why my coordinates were just a bit off but fudged the difference.  Last month I used the same functions to map pedal </atom:summary><link>http://thewallaceline.blogspot.com/2009/04/xquery-module-for-geodesy.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-8072828814958851170</guid><pubDate>Sun, 05 Apr 2009 06:04:00 +0000</pubDate><atom:updated>2009-04-05T08:35:17.283+01:00</atom:updated><title>Dashboards and Widgets in XQuery</title><atom:summary type='text'>Jim Fuller's recent article on Dashboards in XQuery makes a very good case for using XQuery for mashups generally. Jim's dashboard application reminded me of work I had been doing with my students last term on a configurable web page containing widgets to display NOAA weather data, RSS feeds, Google Maps and their own choice of data source. For this we used PHP with Simple XML, but to demonstrate</atom:summary><link>http://thewallaceline.blogspot.com/2009/04/dashboards-and-widgets-in-xquery.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-6700906767851181069</guid><pubDate>Wed, 01 Apr 2009 20:27:00 +0000</pubDate><atom:updated>2009-04-02T12:09:03.628+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>MicroSoft Word</category><category domain='http://www.blogger.com/atom/ns#'>parameterization.</category><category domain='http://www.blogger.com/atom/ns#'>XQuery</category><title>Parameterised MS Word Documents with XQuery</title><atom:summary type='text'>It's coming round to exam time again at UWE, Bristol and as usual I've been struggling to get mine written.  The XQuery-based FOLD application (which supports staff and students in our School) generates exam front pages contain exam details such as module code and title, examination date, length and time as HTML which had to be copied (poorly) into MS Word.  This wasn't very satisfactory and it  </atom:summary><link>http://thewallaceline.blogspot.com/2009/04/parameterisied-ms-word-documents-with.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-752974725705556119</guid><pubDate>Wed, 01 Apr 2009 08:56:00 +0000</pubDate><atom:updated>2009-04-01T21:27:04.781+01:00</atom:updated><title>Review of IBM developerWorks article by Brian Carey</title><atom:summary type='text'>I've just come across an article published by IBM's developerWorks "Use XQuery for the presentation layer"  by Brian Carey.  This illustrates the value of storing complex data in XML form and using XQuery to select and transform to HTML.  Whilst the main message is well-presented, the implementation, below layers of Java, is over-complicated in a couple of ways.Brian makes the curious observation</atom:summary><link>http://thewallaceline.blogspot.com/2009/04/review-of-ibm-developerworks-article-by.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-5971237119503173749</guid><pubDate>Mon, 23 Feb 2009 10:47:00 +0000</pubDate><atom:updated>2009-04-03T11:20:11.180+01:00</atom:updated><title>Data Normalization</title><atom:summary type='text'>My lastest teaching program is for model inference from un-normalized data.  This had its inception in a PHP tool written some years ago. The new version uses my ER XML schema to integrate the output with the other data modelling tools. Normalisation is usually taught on data base courses via the abstract concepts of first, second third normal and higher normal forms. In my introductory module I </atom:summary><link>http://thewallaceline.blogspot.com/2009/02/data-normalization.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-1245000325208207317</guid><pubDate>Fri, 06 Feb 2009 07:39:00 +0000</pubDate><atom:updated>2009-02-08T18:07:41.868Z</atom:updated><title>Data Modelling Tutor</title><atom:summary type='text'>The SQL tutor is now in use and seems to be finding favour with students and other tutors. There is a long list of things to add, like the ability to discuss an exercise but the course moves on and now I want to apply the same ideas to the teaching of data modelling. Students often find this rather difficult.For the past few years we have used an excellent case tool called QSEE, developed by Mark</atom:summary><link>http://thewallaceline.blogspot.com/2009/02/data-modelling-tutor.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-4653612816566073267</guid><pubDate>Fri, 23 Jan 2009 22:57:00 +0000</pubDate><atom:updated>2009-01-24T08:00:11.105Z</atom:updated><title></title><atom:summary type='text'>Some years ago I wrote an SQL  workbook  which was used on a couple of courses, but although it had an interactive interface so that that a student could test their SQL statements against the example database,  the results were not checked.  I planned to create an interactive site which would present  tasks to the student, accept the SQL statement input, execute the statement and compare the </atom:summary><link>http://thewallaceline.blogspot.com/2009/01/some-years-ago-i-wrote-sql-workbook.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-7542153310782805815</guid><pubDate>Sun, 02 Nov 2008 23:40:00 +0000</pubDate><atom:updated>2008-11-02T23:51:59.853Z</atom:updated><title>Listen to Twitter</title><atom:summary type='text'>Finding myself working but wanting to know how Lewis Hamilton was getting on, I wondered if Twitter would be able to let me know.  I was looking for interesting feeds for the students, so I knocked up a bit of XQuery to fetch the atom feed for a Twitter search and turn that into Voice+XML for use with Opera.  Works pretty well even if it is rather unsophisticated and uses page refresh rather than</atom:summary><link>http://thewallaceline.blogspot.com/2008/11/listen-to-twitter.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-4829891792316834689</guid><pubDate>Sun, 26 Oct 2008 18:49:00 +0000</pubDate><atom:updated>2008-10-27T07:20:32.020Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>semantic web</category><category domain='http://www.blogger.com/atom/ns#'>SKOS</category><category domain='http://www.blogger.com/atom/ns#'>SPARQL DBpedia</category><title>Wikipedia Categories for Posters</title><atom:summary type='text'>I'd planned to extend the Alphabet maker into a site that assisted Charlie to find appropriate names by inducing the category of terms and then either warning about names not in the category, or correcting spelling based on names in that category, or even suggesting a name for a missing letter.First I thought  I should understand the categories available in dbPedia and started with the Wikipedia </atom:summary><link>http://thewallaceline.blogspot.com/2008/10/wikipedia-categories-for-posters.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-2886377874538754049</guid><pubDate>Wed, 22 Oct 2008 22:35:00 +0000</pubDate><atom:updated>2008-10-23T00:50:04.888+01:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>xquery gift</category><title>Alphabet Poster</title><atom:summary type='text'>Grandson Charlie (age nearly 6) rang the other night to tell me the animals he had found for the animal alphabet we had discussed the previous night.  I thought it would be a neat present to make a program to create a poster by fetching images from the web for each of his words and lay it out as a poster. I like the idea of writing programs as gifts, but Charlie would prefer something real- like </atom:summary><link>http://thewallaceline.blogspot.com/2008/10/grandson-charlie-age-nearly-6-rang.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-1696190441010763821</guid><pubDate>Mon, 22 Sep 2008 15:30:00 +0000</pubDate><atom:updated>2008-09-22T23:51:27.502+01:00</atom:updated><title>RDF Vocab work</title><atom:summary type='text'>I'm off to Oxford to learn about RDF Vocabularies at the Oxford Vocamp. My own meanderings in this field have been limited to a rather hacked Vocabulary Browser written in XQuery:http://www.cems.uwe.ac.uk/xmlwiki/Vocab/index.xqand my rather limited attempts to provide an RDF extract from the FOLD  Information System.https://www.cems.uwe.ac.uk/wiki/index.php/FOLD/RDFwith a current dump of the </atom:summary><link>http://thewallaceline.blogspot.com/2008/09/rdf-vocab-work.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-1032472089182932492</guid><pubDate>Sat, 01 Mar 2008 09:08:00 +0000</pubDate><atom:updated>2008-03-01T11:14:38.136Z</atom:updated><title>SPARQLing Country Calling Codes</title><atom:summary type='text'>Stimulated by Henry Story's blog entry, I wrote the equivalent in XQuery, and in doing so, bumped into some issues with the dbpedia data. In particular, there is no category I could find to identify a country, but then what constitutes a country depends on what the geographical entity is classified for, so this is to be expected.In the end I resorted to scraping the wikipedia page which lists the</atom:summary><link>http://thewallaceline.blogspot.com/2008/03/sparqling-country-calling-codes.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-9211116280071138889</guid><pubDate>Thu, 28 Feb 2008 08:25:00 +0000</pubDate><atom:updated>2008-02-28T08:50:48.379Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>XQuery SMS</category><title>XQuery SMS service</title><atom:summary type='text'>I've recently resurrected our two-way SMS service for use by my students in their current coursework, a site to gather and report results for their chosen team sport.  I require an exotic interface to the data, for example a speech interface with Opera or an SMS interface.  In my SMS installation, the first word in an in-coming message is used to determine the service to which the message is to </atom:summary><link>http://thewallaceline.blogspot.com/2008/02/xquery-sms-service.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-1533829541447208580</guid><pubDate>Wed, 13 Feb 2008 17:18:00 +0000</pubDate><atom:updated>2008-02-13T17:31:21.164Z</atom:updated><title>RDF /Sparql with XQuery</title><atom:summary type='text'>As part of my learning about RDF, Sparql and the semantic web, I thought I would take the familiar employee/department/salary grade example which I used in the XQuery/SQL comparison as a case study.  To this end I wrote two XQuery scripts:XML to RDF  - a script using a generic function, guided by a map , to translate flat XML tables to RDF and RDFSSparql query interface - an XQuery interface to a</atom:summary><link>http://thewallaceline.blogspot.com/2008/02/rdf-sparql-with-xquery.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-5626907626435701647</guid><pubDate>Mon, 14 Jan 2008 22:38:00 +0000</pubDate><atom:updated>2008-01-28T16:21:36.261Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>AJAX AHAH</category><title>AJAX, AHAH and XQuery</title><atom:summary type='text'>Today [well some days ago now, this item got stuck in draft] , I came across the abbreviation AHAH to refer to the  style of using AJAX to request XHTML fragments to be inserted into an HTML page.  The example of XQuery and AJAX to search employee data in the wikibook used this pattern - like the gentleman in Molière's play, I had been speaking AHAH all these years without realising it .I also </atom:summary><link>http://thewallaceline.blogspot.com/2008/01/ajax-ahah-and-xquery.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-6587393210989219061</guid><pubDate>Sat, 12 Jan 2008 19:14:00 +0000</pubDate><atom:updated>2008-01-14T17:00:27.383Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>googlechart sparkline</category><title>GoogleChart API and sparklines</title><atom:summary type='text'>As a long-time fan of Edward Tufte's work, I've often wanted to make use of his sparkline idea, but haven't come across  a suitable tool to make them.  Now the GoogleChart API can generate these and a plethora of other chart types via a web service.Here is an XQuery script to demo the interface, using the character-based simple encoding of the data:Random sparklineWikibook pageI have one small </atom:summary><link>http://thewallaceline.blogspot.com/2008/01/googlechart-api-and-sparklines.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-8293794093783973493</guid><pubDate>Thu, 10 Jan 2008 21:24:00 +0000</pubDate><atom:updated>2008-01-11T00:53:26.069Z</atom:updated><category domain='http://www.blogger.com/atom/ns#'>AIS</category><title>AIS</title><atom:summary type='text'>As we start to think about the equipment we need aboard Aremiti, the Westerly ketch we are currently re-fitting, one new item that is on our shopping list is  AIS.All vessels over 300 tons and passenger vessels over 100 tons are required to carry an AIS transmitter. This broadcasts vessel  data such as identification, location, speed and course on a VHF frequency.  This is picked up by shore or </atom:summary><link>http://thewallaceline.blogspot.com/2008/01/ais.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-1246834122580583297</guid><pubDate>Mon, 07 Jan 2008 20:14:00 +0000</pubDate><atom:updated>2008-01-07T21:08:11.399Z</atom:updated><title>More XQuery and Semantic web mashups.</title><atom:summary type='text'>Somewhat rested after a short, breezy holiday in Falmouth , with the server now working, I completed my two case studies of XQuery /DBpedia mashups.  Both are described in the XQuery Wikibook. The implementation is still a bit hairy, but now makes use of the SPARQL Query XML Result format, although I still find it useful to transform to tuples with named elements.The first is the mapping of the </atom:summary><link>http://thewallaceline.blogspot.com/2008/01/more-xquery-and-semantic-web-mashups.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-21005140.post-7758472146931738145</guid><pubDate>Mon, 31 Dec 2007 08:49:00 +0000</pubDate><atom:updated>2007-12-31T08:59:56.415Z</atom:updated><title>Servers down</title><atom:summary type='text'>Wouldn't you just know it?  I no sooner blog about XQuery for Semantic web mashups  than  the servers in my department at the university go off-line and I guess they might not be back up now till the 2nd.  About time we had eXist-db server space in the Cloud I say. I wonder if Amazon would be interested?</atom:summary><link>http://thewallaceline.blogspot.com/2007/12/servers-down.html</link><author>noreply@blogger.com (chris wallace)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>