<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>OUseful.Info, the blog...</title>
	<atom:link href="http://ouseful.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ouseful.wordpress.com</link>
	<description>First thoughts on things that might be useful, one day...</description>
	<lastBuildDate>Mon, 21 Dec 2009 12:05:24 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='ouseful.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/d0d33880cb7610a706d45761841fc511?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>OUseful.Info, the blog...</title>
		<link>http://ouseful.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ouseful.wordpress.com/osd.xml" title="OUseful.Info, the blog&#8230;" />
		<item>
		<title>Calling One YQL Query Keyed by Another in Yahoo Pipes</title>
		<link>http://ouseful.wordpress.com/2009/12/21/calling-one-yql-query-keyed-by-another-in-yahoo-pipes/</link>
		<comments>http://ouseful.wordpress.com/2009/12/21/calling-one-yql-query-keyed-by-another-in-yahoo-pipes/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:05:24 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Pipework]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2623</guid>
		<description><![CDATA[The following isn&#8217;t on of my hacks &#8211; it comes from @pjdonnelly &#8211; but it contains a pattern I&#8217;d like to remember so I&#8217;m blogging it anyway&#8230;;-)
The issue it addresses is how to make on YQL query based on another. Once you see the pattern, it&#8217;s obvious&#8230;
Call the first query to retrieve a set of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2623&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The following isn&#8217;t on of my hacks &#8211; it comes from @pjdonnelly &#8211; but it contains a pattern I&#8217;d like to remember so I&#8217;m blogging it anyway&#8230;;-)</p>
<p>The issue it addresses is how to make on YQL query based on another. Once you see the pattern, it&#8217;s obvious&#8230;</p>
<p>Call the first query to retrieve a set of results that contain a key value you want to use in the second &#8220;as-if nested&#8221; query:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4193682392/" title="Photo Sharing"><img src="http://farm5.static.flickr.com/4040/4193682392_e0e5466670.jpg" width="428" height="166"></a></p>
<p>(The environment variable is <em>store://datatables.org/alltableswithkeys</em>.)</p>
<p>then simply use a Loop block to construct a query string for each item based on a key value contained in that item, (genrating queries of the form <tt>select source from flickr.photos.sizes where photo_id="4179541452" and label = "Medium"</tt>) and another loop to run the query:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=fde3d0f2e0cf11bd1a1aea0b32caa8ce" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2739/4192929425_57f29b5909.jpg" width="498" height="500"></a></p>
<p>Very nice&#8230; and another example of a pragmatic approach to pipelinked data queries. ;-)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2623/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2623/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2623/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2623/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2623/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2623/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2623/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2623/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2623/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2623/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2623&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/21/calling-one-yql-query-keyed-by-another-in-yahoo-pipes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm5.static.flickr.com/4040/4193682392_e0e5466670.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2739/4192929425_57f29b5909.jpg" medium="image" />
	</item>
		<item>
		<title>Time for a University Prepress?</title>
		<link>http://ouseful.wordpress.com/2009/12/17/time-for-a-university-prepress/</link>
		<comments>http://ouseful.wordpress.com/2009/12/17/time-for-a-university-prepress/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 13:20:25 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Arcadia]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[Stirring]]></category>
		<category><![CDATA[Thinkses]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2618</guid>
		<description><![CDATA[When I first joined the OU as a lecturer, I was self-motivated, research active, publishing to peer reviewed academic conferences outside of the context of a formal research group. That didn&#8217;t last more than a couple of years, though&#8230; In that context, and at that time, one of the things that struck me about the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2618&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>When I first joined the OU as a lecturer, I was self-motivated, research active, publishing to peer reviewed academic conferences outside of the context of a formal research group. That didn&#8217;t last more than a couple of years, though&#8230; In that context, and at that time, one of the things that struck me about the OU was that research active academics were expected to produce written work for publication in two ways: for research, through academic conferences and journals; and for teaching, via OU course materials.</p>
<p>The internal course material production route was, and still is, managed through a process of course team review in the authoring stage and then supported by editors, artists and picture researchers for publication, although I don&#8217;t remember so much involvement from media project managers ten years or so ago, if they even existed then? Pagination and layout was managed elsewhere, and for authors who struggled to use the provided document templates, the editor was at hand for technical review as well as typos and grammar, as well as reference checking, and  a course secretary could be brought in to style the document appropriately. Third party rights were handled by the course manager, and so on.</p>
<p>In contrast, researchers had to research and write their papers, produce images, charts, tables as required, and style the document as a camera ready document using a provided style sheet. In addition, published researchers would also review (and essentially help edit) works submitted to other journals and conferences. Th publisher contributed nothing except perhaps project management and the production and distribution of the actual print material (though I seem to remember getting offprints, receiving requests for them, and mailing them out with an OU stamp on an OU envelope).</p>
<p>Although I haven&#8217;t published research formally for some time, I suspect the same is still largely true nowadays&#8230;</p>
<p>Given that the OU is a publication house, publishing research and teaching materials as a way of generating income, I wonder if there is an opportunity for the Library to support the research publication process providing specialist support for research authors, including optimising them for discovery!</p>
<p>At the current time, many academic libraries host their institution&#8217;s repository, providing a central location within which are lodge copies of academic research publications produced by members of that institution. Some academic publishers even offer an &#8216;added value&#8217; service in their publication route whereby a published article, as written, corrected, layed out, paginated, rights cleared, and rights waived by the author (and reviewed for free by one or more of their peers) will be submitted back to the institution&#8217;s repository.</p>
<p>[Cue bad Catherine Tate impression]: <em>what a f*****g liberty&#8230;</em> [<a href="http://www.mobango.com/media_details/catherine_tate_(what_a_liberty)/1f7bMZlkA!c%3D/?pni=31">!</a>]</p>
<p>So as the year ends, here&#8217;s a thought I&#8217;ve ranted to several people over the year: academic libraries should seize the initiative from the academic publishers, adopt the view that the content being produced by the academy is valuable to publishers as well as academics, that the reputation of journals is in part built on the reputation of the institutions and academics responsible for producing the research papers, and set up a system in which:</p>
<p>- academics submit articles to the repository using an institutional XML template (no more faffing around with different style sheets from different publishers), at which point they are released using a preview stylesheet as a preprint;</p>
<p>- journals to which articles are to be submitted are required to collect the articles from the repository. Layout and pagination is for them to do, before getting it signed off by the author;</p>
<p>- optionally, journal editors might be invited to bid for the right to publish an article formally. The benefit of formal publication for the publisher is that when a work is cited, the journal gets the credit for having published the work.</p>
<p>That is all&#8230; ;-)</p>
<p>PS RAE/REF style accounting could also be used in part to set journal pricing and payments. Crap journals that no-on cites content in would get nothing. Well cited journals would be recompensed more generously&#8230; There would of course bee opportunities for gaming the system, but addressing this would be similar in kind to implementing measures that search engines based on PageRank style algorithms take against link farms, etc. </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2618/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2618/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2618/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2618&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/17/time-for-a-university-prepress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>
	</item>
		<item>
		<title>First Dabblings With Pipelinked Linked Data</title>
		<link>http://ouseful.wordpress.com/2009/12/15/first-dabblings-with-pipelinked-linked-data/</link>
		<comments>http://ouseful.wordpress.com/2009/12/15/first-dabblings-with-pipelinked-linked-data/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 20:43:16 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Pipework]]></category>
		<category><![CDATA[Tinkering]]></category>
		<category><![CDATA[data.gov.uk]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2603</guid>
		<description><![CDATA[One of the promises of the Linked Data lobby is the ability to combine data from different datasets that share common elements, although this ability is not limited to Linked Data (see, for example, Mash/Combining Data from Three Separate Sources Using Dabble DB). In this post, I&#8217;ll describe a quick experiment in using Yahoo Pipes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2603&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the promises of the Linked Data lobby is the ability to combine data from different datasets that share common elements, although this ability is not limited to Linked Data (see, for example, <a href="http://ouseful.wordpress.com/2009/02/16/mashcombining-data-from-three-separate-sources-using-dabble-db/">Mash/Combining Data from Three Separate Sources Using Dabble DB</a>). In this post, I&#8217;ll describe a quick experiment in using Yahoo Pipes to combine data from two different data sources and briefly consider the extent to which plug&#8217;n'play data can lower the barriers to entry for exploring the potential of Linked Data.</p>
<p>The datasets I&#8217;ll join are both data.gov.uk Linked Data datstores &#8211; the <a href="http://services.data.gov.uk/transport/sparql">transport datastore</a> and the <a href="http://services.data.gov.uk/education/sparql">Edubase/Education datastore</a>. The task I&#8217;ve set myself is to look for traffic monitoring points in the vicinity of one or more schools and to produce a map that looks something like this: </p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=b33618f98336beb579d8cc120195dc9c" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2775/4188619146_dd492217cc.jpg" width="500" height="479"></a></p>
<p>So to get started, let&#8217;s grab a list of schools&#8230; The Talis blog post <a href="http://blogs.talis.com/n2/archives/818">SPARQLing data.gov.uk: Edubase Data</a> contains several example queries over the education datastore. The query I&#8217;ll use is derived trivially from one of those examples; in particular, it grabs the name and location of the two newest schools in the UK:<br />
<tt>prefix sch-ont:  &lt;http://education.data.gov.uk/def/school/&gt;<br />
prefix geo: &lt;http://www.w3.org/2003/01/geo/wgs84_pos#&gt;<br />
SELECT ?school ?name ?date ?lat ?long WHERE {<br />
   ?school a sch-ont:School;<br />
   sch-ont:establishmentName ?name;<br />
   sch-ont:openDate ?date;<br />
   geo:lat ?lat;<br />
   geo:long ?long.<br />
} ORDER BY DESC(?date) LIMIT 2</tt></p>
<p>Pasting the query into the <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=2d96fb25102e5d2e8fa1cf5bcc652006">SPARYQL Pipe -map previewer</a> shows a couple of points on a map, as expected.</p>
<p>So how can we look for traffic monitoring points located in the same area as a school? One of the big problems I have with Linked Data is finding out what the shared elements are between data sets (I don&#8217;t have a rule of thumb for doing this yet) so it&#8217;s time for some detective work &#8211; looking through example SPARQL queries on the two datasets, ploughing through the data.gov.uk Google group, and so on. Searching based on lat/long location data, e.g. within bounding box, is one possibility, but it&#8217;d be neater, to start with at least, to try to used a shared &#8220;area&#8221;, such as the same parish, or other common administrative area.</p>
<p>After some digging, here&#8217;s what I came up with: this snippet from a post to the data.gov.uk Google group relating to the transport datastore:<br />
<em>#If you&#8217;re prepared to search by (local authority) area instead of by a bounding box,<br />
&#8230;.<br />
  geo:long ?long ;<br />
   &lt;http://geo.data.gov.uk/0/ontology/geo#area&gt; &lt;http://geo.data.gov.uk/0/id/area/00DA&gt;;<br />
   traffic:count ?count .</em></p>
<p>and this one from the aforementioned Talis Edubase post relating to the education datastore:<br />
<em>prefix sch-ont:<br />
SELECT ?name ?lowage ?highage ?capacity ?ratio WHERE {<br />
  ?school a sch-ont:School;<br />
     sch-ont:districtAdministrative &gt;http://statistics.data.gov.uk/id/local-authority-district/00HA&gt; .</em></p>
<p>The similar format of the area codes, and the similarity in language (&#8220;prepared to search by (local authority) area&#8221; and &#8220;id/local-authority-district/&#8221;) suggest to me that this two things actually refer to the <em>same</em> thing (I asked @jenit &#8230; it seems they do&#8230;)</p>
<p>So, here&#8217;s a recipe for searching for traffic monitoring locations in the same local authority district as a recently opened school. Firstly, modify the SPARQL query shown above so that it also returns the local authority area:</p>
<p><tt>SELECT ?school ?name ?date ?district ?lat ?long WHERE {<br />
   ?school a sch-ont:School;<br />
   sch-ont:establishmentName ?name;<br />
   sch-ont:openDate ?date;<br />
   sch-ont:districtAdministrative ?district;<br />
   geo:lat ?lat;<br />
  geo:long ?long.<br />
} ORDER BY DESC(?date) LIMIT 2</tt></p>
<p>The result looks something like this:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4187708611/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2544/4187708611_fb46dd3516.jpg" width="500" height="82"></a></p>
<p>Secondly, construct a test query on the transport datastore (<em>http://services.data.gov.uk/transport/sparql</em>) to pull out traffic monitoring points, along with their locations, using a local area URI as the search key:</p>
<p><tt>PREFIX rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;<br />
PREFIX traffic: &lt;http://transport.data.gov.uk/0/ontology/traffic#&gt;<br />
PREFIX geo: &lt;http://www.w3.org/2003/01/geo/wgs84_pos#&gt;<br />
PREFIX area: &lt;http://geo.data.gov.uk/0/ontology/geo#&gt;<br />
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;<br />
SELECT ?point ?lat ?long   WHERE<br />
{  ?point a traffic:CountPoint ;<br />
  geo:lat ?lat ;<br />
  geo:long ?long ;<br />
   &lt;http://geo.data.gov.uk/0/ontology/geo#area&gt; &lt;http://geo.data.gov.uk/0/id/area/00CG&gt;.   }</tt></p>
<p>We can create a <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=75d51dd21ea3b93a3ddbe46f596b4a60">pipe</a> based around this query that takes an adminstrative area identifier, runs the query through a SPARYQL pipe, (SPARQL and YQL pipe) and returns the traffic monitoring points in that area:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4188508702/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2598/4188508702_904f610756.jpg" width="500" height="258"></a></p>
<p>The regular expression block is a hack used to put the region identifier into the form that is required by the transport endpoint if it is passed in using the form required by the education datastore.</p>
<p>Now we&#8217;re going to take results from the recent schools query and then look up the traffic monitoring points in that area via the pipe shown above:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4187754247/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2579/4187754247_402899a62e.jpg" width="500" height="277"></a></p>
<p>The SPARYQL query at the top of <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=68fb21abd1aab4f5b017a13192bde860">the pipe</a> runs the Edubase query and is then split &#8211; the same items are passed into ach of th two parts of the pipe, but thy are processed differently. In the left hand branch, we treat the <em>lat</em> and <em>long</em> elements from the Edubase query in order to create <em>y:location</em> elements that the pipe knows how to process as go elements (e.g. in the creation of a KML output from the pipe).</p>
<p>The right hand branch does something different: the loop block works through the list of recently opened schools on school at a time, and for each one looks up the region identifier and passes it to the traffic monitoring points by region pipe. The school item is then replaced by the list of traffic monitoring points in that region.</p>
<p>You can try the pipe out here: <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=68fb21abd1aab4f5b017a13192bde860">traffic monitoring near most recently opened schools</a></p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=68fb21abd1aab4f5b017a13192bde860" title="Photo Sharing"><img src="http://farm5.static.flickr.com/4040/4187830959_6fc1b741d6.jpg" width="500" height="397"></a></p>
<p>So that&#8217;s one way of doing it. Another way is to take the lat/long of each school and pass that information to a pipe that looks up the traffic monitoring points within a bounding box centered on the original location co-ordinates. This gives us a little more control over the notion of &#8216;traffic monitoring points in the vicinity of a school&#8217;.</p>
<p>Again we see a repeat of the fork and merge pattern used above, although this time th right hand branch is passed to a pip that looks up points within a bounding box specified by the latitude and longitude of each school. A third parameter specifies the size of the bounding box:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=b33618f98336beb579d8cc120195dc9c" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2648/4187845427_985c36d4c8.jpg" width="500" height="284"></a></p>
<p>Notice from the preview of the pipe output how we have details from the left hand branch &#8211; the recently opened schools &#8211; as well as the right hand branch &#8211; the neighbouring traffic monitoring points. Here&#8217;s the result again:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=b33618f98336beb579d8cc120195dc9c" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2775/4188619146_dd492217cc.jpg" width="500" height="479"></a></p>
<p>As with any map previewing pipe, a KML feed is available that allows the results to be displayed in a(n embeddable) Google map:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4188626190/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2509/4188626190_2dd2c55804.jpg" width="500" height="273"></a></p>
<p><em>(Quick tip: if a Google map chokes on a Yahoo pipes KML URI, use a URL shortener like TinyURL or bit.ly rto get a shortened version of the Yahoo Pipes KML URL, and then post that into the Google maps search box:-)</em></p>
<p>So there we have it &#8211; my take on using Yahoo Pipes to &#8220;join&#8221; two, err, Linked Data datasets on data.gov.uk :-) I call it <strong>pipelinked data</strong> :-)</p>
<p>PS some readers may remember how services like Google Fusion Tables can also be used to &#8220;join&#8221; tabular datasets sharing common columns (e.g. <a href="http://ouseful.wordpress.com/2009/08/03/personalising-news-stories-with-interactive-data-doo-dahs-choosing-your-university/">Data Supported Decision Making – What Prospects Does Your University Offer</a>). Well, it seems as if the Google folks have just opened up an <a href="http://googlecode.blogspot.com/2009/12/google-fusion-tables-api.html">API to Google Fusion Tables</a>. Now it may well be that Linked Data is the one true path to enlighentment, but don&#8217;t forget that there are many more mortals than there are astronauts&#8230;)</p>
<p>PPS for the promised bit on &#8220;lower[ing] the barriers to entry for exploring the potential of Linked Data&#8221;, that&#8217;ll have to wait for another post&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2603/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2603/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2603/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2603/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2603/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2603/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2603&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/15/first-dabblings-with-pipelinked-linked-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2775/4188619146_dd492217cc.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2544/4187708611_fb46dd3516.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2598/4188508702_904f610756.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2579/4187754247_402899a62e.jpg" medium="image" />

		<media:content url="http://farm5.static.flickr.com/4040/4187830959_6fc1b741d6.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2648/4187845427_985c36d4c8.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2775/4188619146_dd492217cc.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2509/4188626190_2dd2c55804.jpg" medium="image" />
	</item>
		<item>
		<title>Hackable SPARQL Queries: Parameter Spotting Tutorial</title>
		<link>http://ouseful.wordpress.com/2009/12/14/hackable-queries-parameter-spotting/</link>
		<comments>http://ouseful.wordpress.com/2009/12/14/hackable-queries-parameter-spotting/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 13:39:56 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Pipework]]></category>
		<category><![CDATA[Tinkering]]></category>
		<category><![CDATA[data.gov.uk]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2581</guid>
		<description><![CDATA[Whenever I come across a new website or search tool, one of the first things I do is have a look at the URIs of resource pages and search results to see: a) whether I can make sense of them (that is, are they in any sense human readable), and b) whether they are &#8220;hackable&#8221;, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2581&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Whenever I come across a new website or search tool, one of the first things I do is have a look at the URIs of resource pages and search results to see: a) whether I can make sense of them (that is, are they in any sense human readable), and b) whether they are &#8220;hackable&#8221;, to the extent that I can change certain parts of the URI in particular way and have a pretty good idea what the resulting page will look like.</p>
<p>If the URI is hackable, then it often means that it can be <em>parameterised</em>, in the sense that I can construct valid URIs from some sort of template within which part of the URI path, or one of the URI arguments, is replaced using a variable that can be assigned a particular value as required.</p>
<p>So for example, a search for the term <em>ouseful</em> in Google delivers the results page with URI that looks like:<br />
<em>http://www.google.com/search?client=safari&amp;rls=en&amp;q=ouseful&amp;ie=UTF-8&amp;oe=UTF-8</em></p>
<p>Comparing the search term that I entered (<em>ouseful</em>) with the URI, it&#8217;s easy to see how the search term is used in order to create the results page URI:<br />
<em>http://www.google.com/search?client=safari&amp;rls=en&amp;q=<strong>SEARCH_TERM_HERE</strong>&amp;ie=UTF-8&amp;oe=UTF-8</em></p>
<p>This technique applies equally to looking at SPARQL search queries, so here&#8217;s a worked through example that makes use of a query on the <a href="http://blogs.talis.com/n2/archives/836">Talis n2 blog</a> (I tend to use <a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php">SparqlProxy</a> for running SPARQL queries):<br />
<tt>#List the uri, latitude and longitude for road traffic monitoring points on the M5<br />
PREFIX road: &lt;http://transport.data.gov.uk/0/ontology/roads#&gt;<br />
PREFIX rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt;<br />
PREFIX geo: &lt;http://geo.data.gov.uk/0/ontology/geo#&gt;<br />
PREFIX wgs84: &lt;http://www.w3.org/2003/01/geo/wgs84_pos#&gt;<br />
PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt;<br />
SELECT ?point ?lat ?long WHERE {<br />
  ?x a road:Road.<br />
  ?x road:number "M5"^^xsd:NCName.<br />
  ?x geo:point ?point.<br />
  ?point wgs84:lat ?lat.<br />
  ?point wgs84:long ?long.</tt></p>
<p>Looking carefully at the descriptive comment:</p>
<p><tt>#List the uri, latitude and longitude for road traffic monitoring points on the <strong>M5</strong></tt></p>
<p>and the query:</p>
<p><tt>...<br />
  ?x road:number "<strong>M5</strong>"^^xsd:NCName.<br />
...</tt></p>
<p>we see how it is possible to parameterise the query such that we can replace the &#8220;M5&#8243; string with a variable and use it to pass in the details of (presumably) any UK road number.</p>
<p>In Yahoo Pipes, here&#8217;s what the parameterisation looks like &#8211;  we construct the query string and pass in a value for the desired road number from a user text input (split the query string after <em>?x road:number &#8220;</em>):</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=78f6547cc12ac3ebcb84144ec3e37205" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2576/4182955402_279e80debc.jpg" width="235" height="454"></a></p>
<p>The rest of the pipe is built around the SPARYQL pattern that I have described before (e.g. <a href="http://ouseful.wordpress.com/2009/10/20/getting-started-with-data-gov-uk-triplr-sparyql-and-yahoo-pipes/">Getting Started with data.gov.uk, Triplr SPARYQL and Yahoo Pipes</a>):</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=78f6547cc12ac3ebcb84144ec3e37205" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2589/4182958820_d4f07b9ee5.jpg" width="500" height="433"></a></p>
<p>By renaming the latitude and longitude value elements as <em>y:location.lat</em> and <em>y:location.lon</em>, the pipe infrastructure can do itself and provide us with a map based preview of the pipe output, as well as a KML output that can be viewed in Google maps (simply paste thee KML URI into the Google maps search box and use it as the search term) or Google Earth, for example:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=78f6547cc12ac3ebcb84144ec3e37205" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2495/4182200579_643f275ba0.jpg" width="500" height="432"></a></p>
<p>Inspection of he the pipe&#8217;s KML output URL:<br />
<em>http://pipes.yahoo.com/pipes/pipe.run?<br />
_id=78f6547cc12ac3ebcb84144ec3e37205<br />
&amp;_render=kml&amp;roadnum=M5</em></p>
<p>shows that is is also hackable. Can you see how to change it so that it will return the traffic monitoring points on the <em>A1</em>, bearing in mind it currently refers to the M5?</p>
<p>So there we have it &#8211; given an example SPARQL query for road traffic monitoring locations on thee M5, we can parameterise the query by observation and construct a pipe that gives a map based preview, as well as a KML version of the output, all in less time than it takes to document how it was done&#8230; :-) </p>
<p>Here&#8217;s another example. This time the original query comes from @tommyh (geeky related stuff <a href="http://n2.talis.com/svn/playground/cerealtom/ukroads/">here</a>;-); the query pulls a list of motorway service station locations from dbpedia:</p>
<p><tt>PREFIX rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt;<br />
PREFIX dbpprop:	&lt;http://dbpedia.org/property/&gt;<br />
PREFIX yago-class: &lt;http://dbpedia.org/class/yago/&gt;<br />
PREFIX geo: &lt;http://www.w3.org/2003/01/geo/wgs84_pos#&gt;<br />
SELECT ?services ?label ?road ?lat ?long<br />
WHERE {<br />
  ?services dbpprop:wikiPageUsesTemplate &lt;http://dbpedia.org/resource/Template:infobox_motorway_services&gt; .<br />
  ?services rdfs:label ?label<br />
  OPTIONAL {<br />
    ?services dbpprop:road ?road .<br />
    ?services dbpprop:lat ?lat .<br />
    ?services dbpprop:long ?long .<br />
  } .<br />
  FILTER (isIRI(?road)) .<br />
}<br />
ORDER BY ASC(?label)</tt></p>
<p>The results look like:</p>
<p><a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dbpprop%3A%09%3Chttp%3A%2F%2Fdbpedia.org%2Fproperty%2F%3E%0D%0APREFIX+yago-class%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fclass%2Fyago%2F%3E%0D%0APREFIX+geo%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23%3E%0D%0ASELECT+%3Fservices+%3Flabel+%3Froad+%3Flat+%3Flong%0D%0AWHERE+%7B%0D%0A++%3Fservices+dbpprop%3AwikiPageUsesTemplate+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3Ainfobox_motorway_services%3E+.%0D%0A++%3Fservices+rdfs%3Alabel+%3Flabel%0D%0A++OPTIONAL+%7B%0D%0A++++%3Fservices+dbpprop%3Aroad+%3Froad+.%0D%0A++++%3Fservices+dbpprop%3Alat+%3Flat+.%0D%0A++++%3Fservices+dbpprop%3Along+%3Flong+.%0D%0A++%7D+.%0D%0A++FILTER+%28isIRI%28%3Froad%29%29+.%0D%0A%7D%0D%0AORDER+BY+ASC%28%3Flabel%29&amp;output=html&amp;callback=&amp;tqx=&amp;service-uri=http%3A%2F%2Fdbpedia.org%2Fsparql" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2709/4184002255_fb9e7fb388.jpg" width="500" height="139"></a></p>
<p>So how can we weak the original query to search for motorway services on the M1? By inspection of the query, we see the search is looking for services on any <em>?road</em> (and more than that, on any isIRI(?road), whatever that means?!;-) Looking at the results, we see that the roads are identified in the form:<br />
<em>&lt;http://dbpedia.org/resource/M40_motorway&gt;</em></p>
<p>So we can tweak the query with an additional condition that requires a particular road. For example:</p>
<p><tt>WHERE {<br />
  ?services dbpprop:wikiPageUsesTemplate &lt;http://dbpedia.org/resource/Template:infobox_motorway_services&gt; .<br />
  ?services rdfs:label ?label .<br />
 ?services dbpprop:road &lt;http://dbpedia.org/resource/M1_motorway&gt;<br />
  OPTIONAL {<br />
    ?services dbpprop:lat ?lat .<br />
    ?services dbpprop:long ?long .<br />
  }<br />
}</tt></p>
<p>(I think we can drop the original FILTER too?)</p>
<p>To parameterise this query, we just ned to feed in the desired road number here:</p>
<p><em>&lt;http://dbpedia.org/resource/<strong>ROADNUMBER</strong>_motorway&gt;<br />
</em></p>
<p><a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dbpprop%3A%09%3Chttp%3A%2F%2Fdbpedia.org%2Fproperty%2F%3E%0D%0APREFIX+yago-class%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fclass%2Fyago%2F%3E%0D%0APREFIX+geo%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23%3E%0D%0ASELECT+%3Fservices+%3Flabel+%3Flat+%3Flong%0D%0AWHERE+%7B%0D%0A%3Fservices+dbpprop%3AwikiPageUsesTemplate+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3Ainfobox_motorway_services%3E+.%0D%0A%3Fservices+rdfs%3Alabel+%3Flabel+.%0D%0A%3Fservices+dbpprop%3Aroad+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FM1_motorway%3E%0D%0AOPTIONAL+%7B%0D%0A%3Fservices+dbpprop%3Alat+%3Flat+.%0D%0A%3Fservices+dbpprop%3Along+%3Flong+.%0D%0A%7D%0D%0A%7D&amp;output=html&amp;callback=&amp;tqx=&amp;service-uri=http%3A%2F%2Fdbpedia.org%2Fsparql" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2606/4184779208_0ea5720154.jpg" width="477" height="500"></a></p>
<p>Alternatively, we can hack in a regular expression to filter the results by road number &#8211; e.g. using the M1 again:</p>
<p><tt>WHERE {<br />
  ?services dbpprop:wikiPageUsesTemplate &lt;http://dbpedia.org/resource/Template:infobox_motorway_services&gt; .<br />
  ?services rdfs:label ?label .<br />
 ?services dbpprop:road ?road<br />
  OPTIONAL {<br />
    ?services dbpprop:lat ?lat .<br />
    ?services dbpprop:long ?long .<br />
  } .<br />
  FILTER (isIRI(?road) &amp;&amp; regex(?road,"M1_")) .<br />
}</tt></p>
<p>This time, the parametrisation would occur here:<br />
&lt;em FILTER (isIRI(?road) &amp;&amp; regex(?road,&quot;<strong>ROADNUMBER</strong>_&#8221;))</em></p>
<p>Note that if we just did the regular expression on &#8220;M1&#8243; rather than &#8220;M1_&#8221; we&#8217;d get back results for the M11 etc as well&#8230;</p>
<p>In the spirit of exploration, let&#8217;s se if we can guess at/pattern match towards a little bit more. (Note guessing may or may not work &#8211; but if it doesn&#8217;t, you won&#8217;t break anything!)</p>
<p>The line:<br />
<em> ?services rdfs:label ?label </em><br />
would seem to suggest that human readable labels corresponding to URI identifiers may be recorded using the <em>rdfs:label</em> relation. So let&#8217;s see:</p>
<p>Create a <em>?roadname</em> variable in the query and see if <em>?road rdfs:label ?roadname</em> manages to pull out a useful label:<br />
<tt>SELECT ?services ?label ?roadname ?road ?lat ?long<br />
WHERE {<br />
?services dbpprop:wikiPageUsesTemplate &lt;http://dbpedia.org/resource/Template:infobox_motorway_services&gt; .<br />
?services rdfs:label ?label .<br />
?services dbpprop:road ?road .<br />
?road rdfs:label ?roadname<br />
OPTIONAL</tt></p>
<p>Ooh&#8230; that seems to work (in this case, at least&#8230; maybe it&#8217;s a dbpedia convention, maybe it&#8217;s a general convention, who knows?!:-)</p>
<p><a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dbpprop%3A%09%3Chttp%3A%2F%2Fdbpedia.org%2Fproperty%2F%3E%0D%0APREFIX+yago-class%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fclass%2Fyago%2F%3E%0D%0APREFIX+geo%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23%3E%0D%0ASELECT+%3Fservices+%3Flabel+%3Froadname+%3Froad+%3Flat+%3Flong%0D%0AWHERE+%7B%0D%0A%3Fservices+dbpprop%3AwikiPageUsesTemplate+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3Ainfobox_motorway_services%3E+.%0D%0A%3Fservices+rdfs%3Alabel+%3Flabel+.%0D%0A%3Fservices+dbpprop%3Aroad+%3Froad+.%0D%0A%3Froad+rdfs%3Alabel+%3Froadname%0D%0AOPTIONAL+%7B%0D%0A%3Fservices+dbpprop%3Alat+%3Flat+.%0D%0A%3Fservices+dbpprop%3Along+%3Flong+.%0D%0A%7D+.%0D%0AFILTER+%28isIRI%28%3Froad%29+%26%26+regex%28%3Froad%2C%22M1_%22%29%0D%0A%29+.%0D%0A%7D&amp;output=html&amp;callback=&amp;tqx=&amp;service-uri=http%3A%2F%2Fdbpedia.org%2Fsparql" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2749/4184055827_5b5c6735e4.jpg" width="500" height="224"></a></p>
<p>But it&#8217;s a little messy, with different language variants also listed. However, another trick in my toolbox is <em>memory</em>. I <em>remember</em> seeing a filter option in a query once before:<br />
<em>&amp;&amp; lang(?someLabel)=&#8217;en&#8217;</em></p>
<p>Let&#8217;s try it &#8211; change the filter terms to:<br />
<em>FILTER (isIRI(?road) &amp;&amp; regex(?road,&#8221;M1_&#8221;) &amp;&amp; lang(?roadname)=&#8217;en&#8217;) .</em><br />
and see what happens:</p>
<p><a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0D%0APREFIX+dbpprop%3A%09%3Chttp%3A%2F%2Fdbpedia.org%2Fproperty%2F%3E%0D%0APREFIX+yago-class%3A+%3Chttp%3A%2F%2Fdbpedia.org%2Fclass%2Fyago%2F%3E%0D%0APREFIX+geo%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2003%2F01%2Fgeo%2Fwgs84_pos%23%3E%0D%0ASELECT+%3Fservices+%3Flabel+%3Froadname+%3Froad+%3Flat+%3Flong%0D%0AWHERE+%7B%0D%0A%3Fservices+dbpprop%3AwikiPageUsesTemplate+%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FTemplate%3Ainfobox_motorway_services%3E+.%0D%0A%3Fservices+rdfs%3Alabel+%3Flabel+.%0D%0A%3Fservices+dbpprop%3Aroad+%3Froad+.%0D%0A%3Froad+rdfs%3Alabel+%3Froadname%0D%0AOPTIONAL+%7B%0D%0A%3Fservices+dbpprop%3Alat+%3Flat+.%0D%0A%3Fservices+dbpprop%3Along+%3Flong+.%0D%0A%7D+.%0D%0AFILTER+%28isIRI%28%3Froad%29+%26%26+regex%28%3Froad%2C%22M1_%22%29+%26%26+lang%28%3Froadname%29%3D%27en%27%29+.%0D%0A%7D&amp;output=html&amp;callback=&amp;tqx=&amp;service-uri=http%3A%2F%2Fdbpedia.org%2Fsparql" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2748/4184063057_a5548a5c80.jpg" width="500" height="265"></a></p>
<p>So now I have a query that I can use to find motorway service station locations on a particular UK motorway, and get the name of the motorway back as part of the results. And all with only a modicum of knowledge/understanding of SPARQL&#8230; Instead, I relied on pattern matching, a memory of a fragment of a previous query and a bit of trial and error&#8230;</p>
<p>PS If you want to try out hacking around with a few other SPARQL quries, I&#8217;ve started collecting some likely candidates: <a href="http://ouseful.wordpress.com/2009/12/13/bookmarking-and-sharing-open-data-queries/">Bookmarking and Sharing Open Data Queries</a></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2581/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2581/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2581/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2581&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/14/hackable-queries-parameter-spotting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2576/4182955402_279e80debc.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2589/4182958820_d4f07b9ee5.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2495/4182200579_643f275ba0.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2709/4184002255_fb9e7fb388.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2606/4184779208_0ea5720154.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2749/4184055827_5b5c6735e4.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2748/4184063057_a5548a5c80.jpg" medium="image" />
	</item>
		<item>
		<title>Bookmarking and Sharing Open Data Queries</title>
		<link>http://ouseful.wordpress.com/2009/12/13/bookmarking-and-sharing-open-data-queries/</link>
		<comments>http://ouseful.wordpress.com/2009/12/13/bookmarking-and-sharing-open-data-queries/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 15:10:54 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[data.gov.uk]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2576</guid>
		<description><![CDATA[Over the last few months, I had several aborted attempts at trying to get to grips with SPARQL&#8217;n'RDF, two key ingredients in the Linked Data initiative. So as the sort of self-directed learner who often relies on learning by example, I&#8217;ve put together a Google form to collect together example SPARQL and Google Spreadsheet (aka [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2576&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Over the last few months, I had several aborted attempts at trying to get to grips with SPARQL&#8217;n'RDF, two key ingredients in the Linked Data initiative. So as the sort of self-directed learner who often relies on learning by example, I&#8217;ve put together a Google form to collect together example SPARQL and Google Spreadsheet (aka Guardian Datastore) queries that I can remix and reuse for my own purposes.</p>
<p>Here&#8217;s an example of part of the form:</p>
<p><a href="http://spreadsheets.google.com/viewform?hl=en_GB&amp;formkey=dFNpZlZOMUc5VmlsRTM4UlFKbkQxSmc6MA" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2517/4181012455_9b216013e2.jpg" width="425" height="500"></a></p>
<p>The form collects a description of the query, its endpoint, and ontologies used in the query, the query itself, and optionally a link to an example output from the query, as well as other bits of info (e.g. there&#8217;s a place for a link to a blog post describing the query).</p>
<p>Here are some of the bookmarked queries:</p>
<p><a href="http://spreadsheets.google.com/ccc?key=0AmbQbL4Lrd61dFNpZlZOMUc5VmlsRTM4UlFKbkQxSmc&amp;hl=en_GB" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2594/4181779662_c1435b3550.jpg" width="500" height="177"></a></p>
<p>At the moment, the saved queries can only be viewed in the spreadsheet, but with time allowing I hope to build a front end/explorer that will allow you to run the queries, see preview results of the queries etc etc. (Note this is intended as a tool for !astronauts to get started with/teach about/learn about/explore various datasets. Folk who would be put off by first being exposed to the RDF&#8217;n'SPARQL, rather than seeing the data in a table, plotted on a chart, etc etc. Remember, most people who see lat/long data in a table <em>do not</em> see in their mind&#8217;s eye a map with corresponding markers on it; they see a list of largely meaningless numbers&#8230;)</p>
<p>You can find the form here: <a href="http://spreadsheets.google.com/viewform?hl=en_GB&amp;formkey=dFNpZlZOMUc5VmlsRTM4UlFKbkQxSmc6MA">QUERY Sharing Form</a> and the results here: <a href="http://spreadsheets.google.com/ccc?key=0AmbQbL4Lrd61dFNpZlZOMUc5VmlsRTM4UlFKbkQxSmc&amp;hl=en_GB">Example Queries</a></p>
<p>There aren&#8217;t many examples in there at the moment, but the form is an open one and you can use it if you like&#8230; I&#8217;m also taking suggestions for how to improve the form so that other folk might b tempted into using it&#8230; ;-) (Note that I intend to keep tweaking the spreadsheet as I use it in order to make it more useful <em>for me</em>, if no-one else&#8230;)</p>
<p>The spreadsheet that collects the results should also be open as a read only document (let me know if you try to us it and have any problems doing so) so fel free to browse through the examples.  I intend to put a front end of sorts onto the spreadsheet at some point using the Google Visualisation API,(cf. my original (and currently stalled) <a href="http://ouseful.open.ac.uk/datastore/gspreadsheetdb4.php">Guardian DataStore Explorer</a>),  but if you want to beat me to it, go for it :-)</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2576/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2576/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2576/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2576&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/13/bookmarking-and-sharing-open-data-queries/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2517/4181012455_9b216013e2.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2594/4181779662_c1435b3550.jpg" medium="image" />
	</item>
		<item>
		<title>Keeping Your Facebook Updates Private</title>
		<link>http://ouseful.wordpress.com/2009/12/10/keeping-your-facebook-updates-private/</link>
		<comments>http://ouseful.wordpress.com/2009/12/10/keeping-your-facebook-updates-private/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 10:06:25 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Evilness]]></category>
		<category><![CDATA[Infoskills]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2569</guid>
		<description><![CDATA[So it seems as if Facebook is trying to encourage everyone to open up a little, and just share&#8230; Ah, bless&#8230; I suppose it is getting near to Christmas, after all&#8230;

So if you don&#8217;t want the world and Google to know everything you&#8217;re posting about on Facebook, and you are quite happy with privacy settings [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2569&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So it seems as if Facebook is trying to encourage everyone to open up a little, and just share&#8230; Ah, bless&#8230; I suppose it is getting near to Christmas, after all&#8230;</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4174068302/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2571/4174068302_e53f7b6f8d.jpg" width="500" height="239"></a></p>
<p>So if you <em>don&#8217;t</em> want the world and Google to know everything you&#8217;re posting about on Facebook, and you are quite happy with privacy settings as they currently are, thank you very much, here&#8217;s what I (think) you need to do&#8230; <em>Continue to the next step</em> and change the settings from <em>Everyone</em>:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4173313167/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2772/4173313167_d617df8128.jpg" width="500" height="450"></a></p>
<p> to <em>Old Settings</em>:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4173316331/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2727/4173316331_72462155ae.jpg" width="500" height="394"></a></p>
<p>When you hover over the <em>Old Settings</em> radio button, a tooltip should pop up telling you what your current settings are. If anything looks odd, make a note of it so that you can change the setting later.</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4174073832/" title="Photo Sharing"><img src="http://farm5.static.flickr.com/4039/4174073832_51ac52753b_o.png" width="232" height="139"></a></p>
<p>If you think you&#8217;d like to make things available to <em>Everyone</em>, bear in mind these <strong>important things to remember</strong>:</p>
<blockquote><p>Information you choose to share with Everyone is available to everyone on the internet.</p></blockquote>
<p>And when you install an application:</p>
<blockquote><p>When you visit a Facebook-enhanced application, it will be able to access your publicly available information, which includes Name, Profile Photo, Gender, Current City, Networks, Friend List, and Pages. This information is considered visible to Everyone.</p></blockquote>
<p>To save the settings, click to do exactly what it says on the button:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4173336819/" title="Photo Sharing"><img src="http://farm5.static.flickr.com/4004/4173336819_a42ebf8930.jpg" width="308" height="128"></a></p>
<p>If, whilst changing the settings, you noticed that an <em>Old Setting</em> tooltip suggested that your current privacy settings were different to what you thought they were, you&#8217;ll need to go in to the Privacy Settings panel, which you can find from the <em>Settings</em> on the toolbar at the top of each Facebook page:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4174096086/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2774/4174096086_4ca74f4b49_o.png" width="212" height="132"></a></p>
<p>Looking at the actual privacy settings page, there are several menu options that lead to yet more menu options and then screenfuls of different settings&#8230;</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4173324431/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2568/4173324431_c3e8d4c703.jpg" width="500" height="317"></a></p>
<p>When I have a spare 2-3 hours, I&#8217;ll try to post a summary of them&#8230; (unless anyone already knows of a good tutorial on &#8220;managing your Facebook privacy settings&#8221;?) For now, though, I&#8217;m afraid you&#8217;re own trying to track down the setting you disagreed with so that you can change it to a setting you do want to have&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2569/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2569/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2569/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2569&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/10/keeping-your-facebook-updates-private/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2571/4174068302_e53f7b6f8d.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2772/4173313167_d617df8128.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2727/4173316331_72462155ae.jpg" medium="image" />

		<media:content url="http://farm5.static.flickr.com/4039/4174073832_51ac52753b_o.png" medium="image" />

		<media:content url="http://farm5.static.flickr.com/4004/4173336819_a42ebf8930.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2774/4174096086_4ca74f4b49_o.png" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2568/4173324431_c3e8d4c703.jpg" medium="image" />
	</item>
		<item>
		<title>Programming Pipes With Delicious and Sharing data.gov.uk SPARQL Queries As A Result</title>
		<link>http://ouseful.wordpress.com/2009/12/09/programming-pipes-with-delicious-and-sharing-data-gov-uk-sparql-queries-as-a-result/</link>
		<comments>http://ouseful.wordpress.com/2009/12/09/programming-pipes-with-delicious-and-sharing-data-gov-uk-sparql-queries-as-a-result/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 23:28:44 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Pipework]]></category>
		<category><![CDATA[Tinkering]]></category>
		<category><![CDATA[data.gov.uk]]></category>
		<category><![CDATA[sparql]]></category>
		<category><![CDATA[sparqlproxy]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2562</guid>
		<description><![CDATA[In the post Sharing Linked Data Queries With Mortals… I described a rather clunky pattern for sharing SPARQL queries onto a data.gov.uk sparql endpoint using delicious, along with a Yahoo pipe to generate a SPARQLProxy URI that identified a CSV formatted output from the query that could be consumed in something like Google spreadsheets (e.g. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2562&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In the post <a href="http://ouseful.wordpress.com/2009/12/04/sharing-linked-data-queries-with-mortals/">Sharing Linked Data Queries With Mortals…</a> I described a rather clunky pattern for sharing SPARQL queries onto a data.gov.uk sparql endpoint using delicious, along with a Yahoo pipe to generate a <a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php">SPARQLProxy</a> URI that identified a CSV formatted output from the query that could be consumed in something like Google spreadsheets (e.g. <a href="http://ouseful.wordpress.com/2009/11/26/viewing-sparqled-data-gov-uk-data-in-a-google-spreadsheet/">Viewing SPARQLed data.gov.uk Data in a Google Spreadsheet</a>).</p>
<p>In this post, I&#8217;ll refine that pattern a little more and show how to use delicious to bookmark a &#8220;processed&#8221; form of the output of the query, along with all the ingredients needed to generate that output. In a later post (hopefully before Christmas) I&#8217;ll try to show how the pattern can be used to share queries into other datastores, such as Google visualization API queries into a Google spreadsheet.</p>
<p>[The post describes two <em>independent</em> operations - firstly, how to generate  a sparqlproxy uri from a set of delicious tags; secondly, how to generate a map from sparqlproxy output.]</p>
<p>In what follows, I&#8217;m using delicious as a database, and delicious tags as machine tags that can be used as arguments within a Yahoo pipe. The intention is <em>not</em> to suggest that this is even a good way of sharing SPARQL queries and demo outputs, but it does show an improvised way of how to share them,. It also provides just enough raw material to allow UI designers to think how we might capture, share and display sample use cases that go from SPARQL query to human meaningful output.</p>
<p>So here&#8217;s what a &#8220;finished&#8221; delicious bookmark looks like:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4172261347/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2753/4172261347_3d494d4f7d.jpg" width="500" height="152"></a></p>
<p>The three &#8220;machine tags&#8221;:<br />
- endpoint:http://services.data.gov.uk/transport/sparql<br />
- output:csv<br />
- query:http://codepad.org/hPo2XIzx/raw.txt<br />
are used as instructions in a Yahoo pipe that generates a query using SPARQLProxy:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=22059ac6f967d7117b1262586c92b371" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2608/4173031514_65346cfe17.jpg" width="500" height="437"></a></p>
<p>A feed of bookmarked queries is pulled in from delicious, and checked to see that all the programming arguments that are required are there. (The <em>sparlproxy_demo</em> tag requirement is just a convenience.)</p>
<p>If all the arguments are available, their values are captured and passed to a routine to construct the SPARQLProxy URIs:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=22059ac6f967d7117b1262586c92b371" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2654/4173038002_b6fdd83e07.jpg" width="500" height="358"></a></p>
<p>The query bookmarked by the tags is a query onto the transport database that pulls out the location traffic monitoring points on thee M5. The bookmarked URI is a demonstration of how to use the output of that query. In the current example, the bookmarked demo URI looks like this:</p>
<p><em>http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=<br />
&amp;q=http:%2F%2Fpipes.yahoo.com%2Fpipes%2Fpipe.run%3F_id%3D1c77faa95919df9dbea678a6bf4881c6%26_render%3Dkml<br />
&amp;sll=37.0625,-95.677068&amp;sspn=44.25371,70.751953&amp;ie=UTF8&amp;z=8</em></p>
<p>That is, it is a bookmark to a Google map that is displaying a KML feed pulled in from a Yahoo pipe.</p>
<p>This is the Google Map:</p>
<p><a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=http:%2F%2Fpipes.yahoo.com%2Fpipes%2Fpipe.run%3F_id%3D1c77faa95919df9dbea678a6bf4881c6%26_render%3Dkml&amp;sll=37.0625,-95.677068&amp;sspn=44.25371,70.751953&amp;ie=UTF8&amp;z=8" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2748/4172291721_76cfb26a1e.jpg" width="500" height="359"></a></p>
<p>This is the Yahoo pipe the KML is pulled from:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=1c77faa95919df9dbea678a6bf4881c6" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2611/4172294941_af59b425b8.jpg" width="500" height="463"></a></p>
<p>And this is a peek inside that pipe:</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=1c77faa95919df9dbea678a6bf4881c6" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2566/4172297497_f46c044e61.jpg" width="500" height="401"></a></p>
<p>The URI for the fetched CSV file is on that was generated from the bookmarked query tags by the first pipe shown above.</p>
<p>So to recap &#8211; this bookmark:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4172261347/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2753/4172261347_3d494d4f7d.jpg" width="500" height="152"></a></p>
<p>links through to a Google map showing traffic monitoring locations on the M5. The map is an &#8216;end-user&#8217; demo that shows how Government data may be displayed in a meaningful way. In addition, th tags in the bookmark carry enough information for the user to construct a SPARQL qury that will generate the data that is displayed by the map. A utility Yahoo pipe (ID 22059ac6f967d7117b1262586c92b371) can take a delicious RSS feed containing the bookmark and generate a SPARQLProxy URI that calls the tagged endpoint with the tagged query and generates the tag specified output. There is then a break in the chain. A utility pipe capable of handling SPPARQLProxy generated CSV from data.gov.uk transport data generates a KML version of the data, which is then passed to a Google map.</p>
<p>So what? So I don&#8217;t know what&#8230; but it has got me thinking that what might be useful is a quick way of sharing:<br />
- info that is sufficient to generate and run a particular SPARQL query.<br />
- along with a link to an &#8216;end user&#8217; demo showing how that data might be used or displayed<br />
- all in one handy package&#8230;</p>
<p>Which is what the above does&#8230; sort of.. though it&#8217;s still way too complicated for mortals&#8230;</p>
<p>PS It occurs to me that it might be possible to define a pipeline using delicious tags too? Maybe something like:<br />
pipeline:22059ac6f967d7117b1262586c92b371?name=psychemedia&amp;tag=transportDemo//<br />
1c77faa95919df9dbea678a6bf4881c6?_render=kml//<br />
gmap</p>
<p>where the first step in the pipeline (<em>2059ac6f967d7117b1262586c92b371?name=psychemedia&amp;tag=transportDemo</em>) says &#8220;run the delicious RSS feed from <em>psychemedia/transportDemo</em> (assuming I had recursively bookmarked that record with <em>transportDemo</em>) through the pipe with ID <em>2059ac6f967d7117b1262586c92b371</em> to generate the SPARQLProxy URI, then pass that to  the pipe with ID <em>1c77faa95919df9dbea678a6bf4881c6</em> which should generate a KML output, which in turn should be sent to a Google map?!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2562/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2562/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2562/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2562&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/09/programming-pipes-with-delicious-and-sharing-data-gov-uk-sparql-queries-as-a-result/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2753/4172261347_3d494d4f7d.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2608/4173031514_65346cfe17.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2654/4173038002_b6fdd83e07.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2748/4172291721_76cfb26a1e.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2611/4172294941_af59b425b8.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2566/4172297497_f46c044e61.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2753/4172261347_3d494d4f7d.jpg" medium="image" />
	</item>
		<item>
		<title>Meanwhile, Over on the Arcadia Blog(s)… Redux</title>
		<link>http://ouseful.wordpress.com/2009/12/09/meanwhile-over-on-the-arcadia-blogs%e2%80%a6-redux/</link>
		<comments>http://ouseful.wordpress.com/2009/12/09/meanwhile-over-on-the-arcadia-blogs%e2%80%a6-redux/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 21:40:27 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Anything you want]]></category>
		<category><![CDATA[Arcadia]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2555</guid>
		<description><![CDATA[A month or so ago, I posted a round-up of items I&#8217;d published on the various Arcadia Project blogs ( Meanwhile, Over on the Arcadia Blog(s)…). Here&#8217;s a follow up to that one, providing a quick review of  the various Arcadia posts I&#8217;ve produced since then, posts that might in other circumstances have normally [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2555&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A month or so ago, I posted a round-up of items I&#8217;d published on the various Arcadia Project blogs (<a href="http://ouseful.wordpress.com/2009/11/05/meanwhile-over-on-the-arcadia-blogs/"> Meanwhile, Over on the Arcadia Blog(s)…</a>). Here&#8217;s a follow up to that one, providing a quick review of  the various Arcadia posts I&#8217;ve produced since then, posts that might in other circumstances have normally appeared on this blog.</p>
<ul>
<li><a href="http://arcadiaproject.blogspot.com/2009/11/what-if-livescribe-book-support.html">What If? Livescribe Book Support</a>, mulling over a couple of opportunities that might arise if Livescribe had a plugin architecture and open developer API;</li>
<li><a href="http://arcadiaproject.blogspot.com/2009/11/do-libraries-cater-for-todays.html">Do Libraries Cater for Today&#8217;s Researchers and Research Students?</a>,  <a href="http://arcadiaproject.blogspot.com/2009/11/do-libraries-cater-for-todays_06.html">Do Libraries Cater for Today&#8217;s Undergraduate Students?</a> and <a href="http://arcadiaproject.blogspot.com/2009/12/seeking-information-in-digital-age.html">Seeking Information in the Digital Age</a> which review some recent surveys on the use of academic libraries and the online search behaviour of today&#8217;s students and young researchers;</li>
<li><a href="http://arcadiaproject.blogspot.com/2009/11/keeping-up-with-events.html">Keeping Up With Events</a>, a proof of concept mobile app that I&#8217;ve used quite heavily over the last few weeks for keeping track of interesting evening lectures to go to, along with a couple of posts outlining ideas for a couple of different mobile apps: <a href="http://arcadiaproject.blogspot.com/2009/11/doodling-ideas-for-mobile-library-app.html">Doodling Ideas for a Mobile Library App</a> and <a href="">A Trip into the Stacks&#8230; </a> [scheduled for tomorrow]. <a href="http://arcadiaproject.blogspot.com/2009/12/no-cameras-in-library.html">No Cameras in the Library&#8230;</a> focusses on another mobile use case, the potential of camera enabled mobile phones in a library context (</li>
<li><a href="http://arcadiaproject.blogspot.com/2009/11/custom-search-engines-on-library.html">Custom Search Engines On Library Websites</a> showed how Google custom search engines can be used within library websites, and <a href="http://arcadiaproject.blogspot.com/2009/12/opac-ground-truth.html">OPAC Ground Truth&#8230;</a> simply poses a question about the use of ranking algorithms in library catalogues;</li>
<li><a href="http://arcadiaproject.blogspot.com/2009/12/what-can-academic-libraries-learn-from.html">What Can Academic Libraries Learn From Public Libraries&#8230;</a> is a plug for a consultation on the future of public libraries that we posted on WriteToReply, though I think it also has some relevance to a consideration of the future of academic libraries.</li>
<li><a href="http://arcadiaproject.blogspot.com/2009/11/universal-borrowing-across-cambridge.html">Universal Borrowing Across Cambridge University Libraries? </a> and <a href="http://arcadiaproject.blogspot.com/2009/11/resource-item-types-and-loan-periods-in.html">Resource &#8220;Item Types&#8221; and Loan Periods in Cambridge University Libraries </a> both start to explore the relationship between the UL and all the other Cambridge University libraries, but most of my notes on that question are still in my notebook:-(</li>
<li>Whilst I had hoped to do more hackery, the project hasn&#8217;t turned out quite that way :-( That said, I did manage to pull together another small Yahoo Pipes tutorial, which hopefully some folk might find useful: <a href="http://arcadiamashups.blogspot.com/2009/11/mashlib-pipes-tutorial-reading-list.html">Mashlib Pipes Tutorial: Reading List Inspired Journal Watchlists</a></li>
</ul>
<p>PS For completeness in this summary of posts I&#8217;ve recently blogged elsewhere, there&#8217;s a smattering of stuff on the WriteToReply/Actually blog:</p>
<ul>
<li><a href="http://writetoreply.org/actually/2009/10/28/thinking-about-user-tracking-on-writetoreply/">Thinking About User Tracking on WriteToReply</a>, which looks at how to track which organisations or universities are driving traffic to a particular website using Google Analytics;</li>
<li><a href="http://writetoreply.org/actually/2009/11/22/measuring-website-usage-with-google-analytics-part-i/">Measuring Website Usage With Google Analytics, Part I</a> which reviews how to capture COI recommended web metrics using Google Analytics</li>
<li><a href="http://writetoreply.org/actually/2009/11/12/campaign-tracking-with-google-analytics/">“Campaign” Tracking With Google Analytics</a>, a review of how to use Google Analytics campaign tracking codes;</li>
<li><a href="http://writetoreply.org/actually/2009/12/07/embedding-consultations-in-whats-already-out-there/">Embedding Consultations in What’s Already Out There</a>, which considers how linking <em>out</em> from a consultation document can embed it in a wider conversational context;</li>
</ul>
<p>Phew&#8230; next week, back to normal &#8211; ish &#8211; though I intend to carry on posting library related stuff on the Arcadia blogs.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2555/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2555/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2555/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2555&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/09/meanwhile-over-on-the-arcadia-blogs%e2%80%a6-redux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>
	</item>
		<item>
		<title>A Final Nail in the Coffin of &#8220;Google Ground Truth&#8221;?</title>
		<link>http://ouseful.wordpress.com/2009/12/07/a-final-nail-in-the-coffin-of-google-ground-truth/</link>
		<comments>http://ouseful.wordpress.com/2009/12/07/a-final-nail-in-the-coffin-of-google-ground-truth/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:04:57 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Infoskills]]></category>
		<category><![CDATA[personalised search]]></category>
		<category><![CDATA[real time search]]></category>
		<category><![CDATA[realtime search]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2547</guid>
		<description><![CDATA[I&#8217;ve written before about how Google&#8217;s personalisation features threaten the notion of some sort of &#8220;Google Ground Truth&#8221;, the ability for two different individuals in different locations to enter the same term into the Google search box, and get back similar results (e.g. Another Nail in the Coffin of “Google Ground Truth”?).
So what threats are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2547&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve written before about how Google&#8217;s personalisation features threaten the notion of some sort of &#8220;Google Ground Truth&#8221;, the ability for two different individuals in different locations to enter the same term into the Google search box, and get back similar results (e.g. <a href="http://ouseful.wordpress.com/2009/01/21/another-nail-in-the-coffin-of-google-ground-truth/">Another Nail in the Coffin of “Google Ground Truth”?</a>).</p>
<p>So what threats are there? Google Personalised Search for logged in Google users is one obvious source of differences, as are regional differences from the different national search engines (e.g. <em>google.ca</em> versus <em>google.co.uk</em>).</p>
<p>With more and more browsers become location aware, I wonder whether we will increasingly see regional, or even hyperlocal, differences in standard web search based on browser location (something that presumably already exists in the local search engines).</p>
<p>Social signals (links from your friends or amplified by them) and real time signals also act as potential sources of difference for personalised ranking factors.</p>
<p>And for users engaged in a search session, the ranking of results you see in the third search in a session may even be influenced by the terms (and results you clicked on?!) in the first or second queries of that session.</p>
<p>Anyway, it seems that as of the weekend, there is another threat &#8211; perhaps a final threat &#8211; to that notion: <a href="http://googleblog.blogspot.com/2009/12/personalized-search-for-everyone.html">Personalized Search for everyone</a>:</p>
<blockquote><p>Previously, we only offered Personalized Search for signed-in users, and only when they had Web History enabled on their Google Accounts. What we&#8217;re doing today is expanding Personalized Search so that we can provide it to signed-out users as well. This addition enables us to customize search results for you based upon 180 days of search activity linked to an anonymous cookie in your browser. It&#8217;s completely separate from your Google Account and Web History (which are only available to signed-in users). You&#8217;ll know when we customize results because a &#8220;View customizations&#8221; link will appear on the top right of the search results page. Clicking the link will let you see how we&#8217;ve customized your results and also let you turn off this type of customization.</p></blockquote>
<p>Chris Lott also made a <a href="http://twitter.com/fncll/statuses/6403539553">very perceptive comment</a>:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4167281460/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2580/4167281460_e2a283434d.jpg" width="305" height="90"></a></p>
<p>PS It also looks like Google are looking for even more traffic data to help feed their stats collection&#8217;n'analysis engines: <a href="http://googleblog.blogspot.com/2009/12/introducing-google-public-dns.html">Introducing Google Public DNS</a></p>
<p>PPS it seems that Google just announced real time search results integration into the Google homepage. It&#8217;s still rolling out, but here&#8217;s a preview of what the integration looks like:</p>
<p><a href="http://www.flickr.com/photos/psychemedia/4166493489/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2531/4166493489_fb28c6305d.jpg" width="500" height="479"></a></p>
<p>Read more at <a href="http://googleblog.blogspot.com/2009/12/relevance-meets-real-time-web.html">Relevance meets the real-time web</a>. Exciting times&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2547/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2547/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2547/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2547&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/07/a-final-nail-in-the-coffin-of-google-ground-truth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2580/4167281460_e2a283434d.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2531/4166493489_fb28c6305d.jpg" medium="image" />
	</item>
		<item>
		<title>Sharing Linked Data Queries With Mortals&#8230;</title>
		<link>http://ouseful.wordpress.com/2009/12/04/sharing-linked-data-queries-with-mortals/</link>
		<comments>http://ouseful.wordpress.com/2009/12/04/sharing-linked-data-queries-with-mortals/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 21:33:50 +0000</pubDate>
		<dc:creator>Tony Hirst</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Pipework]]></category>
		<category><![CDATA[Tinkering]]></category>
		<category><![CDATA[data.gov.uk]]></category>
		<category><![CDATA[delicous]]></category>
		<category><![CDATA[sparqlproxy]]></category>

		<guid isPermaLink="false">http://ouseful.wordpress.com/?p=2542</guid>
		<description><![CDATA[So I know, I know, I b****y well know how important the whole RDF thing is for Linked Data, and I know we&#8217;re not there yet with respect to actual people using data pulled from data.gov.* sources, and I&#8217;m starting to be persuaded that maybe data.gov.uk is only there to feed the growth of semantic [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2542&subd=ouseful&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So I know, I know, I b****y well know how important the whole RDF thing is for Linked Data, and I know we&#8217;re not there yet with respect to actual <em>people</em> using data pulled from data.gov.* sources, and I&#8217;m starting to be persuaded that maybe data.gov.uk is only there to feed the growth of semantic web developer capacity but ultimately, ultimately, it will probably be folk who can&#8217;t cope with anything other than a spreadsheet who are going to have to use this data&#8230;</p>
<p>&#8230;so the spirit in which this is offered is one of just trying to protect the interests of potential future end users while the geeky tech developer astronauts (astronauts being @iand&#8217;s term;-) do the groundwork&#8217;n&#8217;spadework and make design decisions whose full impact may not otherwise be realised for a little while yet&#8230;</p>
<p>So what am I offering&#8230;? A quick&#8217;n'dirty way of sharing bookmarks into the <a href="http://data-gov.tw.rpi.edu/ws/sparqlproxy.php">sparqlproxy Web Service</a> that I posted about in <a href="http://ouseful.wordpress.com/2009/11/26/viewing-sparqled-data-gov-uk-data-in-a-google-spreadsheet/">Viewing SPARQLed data.gov.uk Data in a Google Spreadsheet</a>.</p>
<p>So how does it work? Like this&#8230;</p>
<p>The geeky tech SPARQL speaking astronaut writes their SPAQRL query and posts it into codepad:</p>
<p><a href="http://codepad.org/HJBHDQrz" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2690/4158086165_9bab5a7669.jpg" width="444" height="417"></a></p>
<p>They grab the link to the raw text and bookmark it in delicious; the SPARQL endpoint for the query is pasted into the description, and a brief description of the query into the title; the required output is identified using an <em>output:</em> machine tag (e.g. <em>output:</em>, <em>output:sparql</em>, <em>output:html</em>, <em>output:csv</em>, <em>output:xml</em>, <em>output:exhibit</em> or <em>output:gvds</em>):</p>
<p><a href="http://delicious.com/psychemedia/sparqlproxy_demo" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2704/4158095395_71017e57f4.jpg" width="330" height="243"></a></p>
<p>(An alternative might be to have the endpoint as the title, and the description as the description, or a brief description as a title, a full description asa description, and a <em>endpoint:</em> &#8220;machine tag&#8221; for the endpoint, but this was just a proof of concept, right? ;-)</p>
<p>The <a href="http://pipes.yahoo.com/pipes/pipe.info?_id=fdbdb73880fda5d15ce10d5976d849a1">following pipe</a> constructs the SPARQLProxy query for each bookmark using the specified query, endpoint and output type (at the moment, the pipe also requires a <em>sparqlproxy_demo</em> tag to be present):</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=fdbdb73880fda5d15ce10d5976d849a1" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2638/4158870798_bd5af24eb3.jpg" width="500" height="355"></a></p>
<p>A link to the result of the query, suitably transformed, is then rewritten as the link in the output feed.</p>
<p>A bit of tidying up on the pipe lets you specify a delicious user and/or tag as the origin of the bookmarked links&#8230;</p>
<p><a href="http://pipes.yahoo.com/pipes/pipe.info?_id=fdbdb73880fda5d15ce10d5976d849a1" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2740/4158883812_8b352cf734.jpg" width="500" height="353"></a></p>
<p>So there we have it, an easy way to share SPARQLed queries and get access to &#8220;human usable&#8221; outputs&#8230;</p>
<p>PS there&#8217;s no reason, in the recipe above, not to also use the sparql endpoint URI in a tag or machine tag too, to allow for queries run over the same bookmark to be collected together and pulled out of delicious by tag/endpoint&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ouseful.wordpress.com/2542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ouseful.wordpress.com/2542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ouseful.wordpress.com/2542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ouseful.wordpress.com/2542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ouseful.wordpress.com/2542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ouseful.wordpress.com/2542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ouseful.wordpress.com/2542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ouseful.wordpress.com/2542/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ouseful.wordpress.com/2542/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ouseful.wordpress.com/2542/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ouseful.wordpress.com&blog=325417&post=2542&subd=ouseful&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://ouseful.wordpress.com/2009/12/04/sharing-linked-data-queries-with-mortals/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">Tony Hirst</media:title>
		</media:content>

		<media:content url="http://farm3.static.flickr.com/2690/4158086165_9bab5a7669.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2704/4158095395_71017e57f4.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2638/4158870798_bd5af24eb3.jpg" medium="image" />

		<media:content url="http://farm3.static.flickr.com/2740/4158883812_8b352cf734.jpg" medium="image" />
	</item>
	</channel>
</rss>