<?xml version="1.0" encoding="ISO-8859-1"?><!-- OPML generated by OPML Editor v10.1a8 on Fri, 20 Apr 2007 21:43:05 GMT --><opml version="2.0">	<head>		<title>03.opml</title>		<dateCreated>Sun, 03 Dec 2006 08:37:57 GMT</dateCreated>		<dateModified>Fri, 20 Apr 2007 21:43:05 GMT</dateModified>		<ownerName>Tom Morris</ownerName>		<ownerEmail>http://blogs.opml.org/mail/tommorris</ownerEmail>		<expansionState></expansionState>		<vertScrollState>1</vertScrollState>		<windowTop>458</windowTop>		<windowLeft>559</windowLeft>		<windowBottom>877</windowBottom>		<windowRight>1295</windowRight>		</head>	<body>		<outline text="The &lt;a href=&quot;http://blogs.msdn.com/xmlteam/archive/2006/12/03/xml-team-at-xml-2006-conference.aspx&quot;&gt;Microsoft XML Team blog&lt;/a&gt; has some links to stuff going on at the XML 2006 conference that's going on this week in Boston." created="Sun, 03 Dec 2006 23:07:47 GMT"/>		<outline text="Want to see something silly? The United States Senate is &lt;a href=&quot;http://thomas.loc.gov/cgi-bin/query/z?c108:S.1002.IS:&quot;&gt;looking at the Amateur Sports Integrity Act&lt;/a&gt; in this session (I think) - there's more at &lt;a href=&quot;http://www.govtrack.us/rdfbrowse.xpd?uri=tag%3agovshare.info%2c2005%3adata%2fus%2fcongress%2f108%2fbills%2fs1002&quot;&gt;GovTrack.us&lt;/a&gt;. Basically, they are trying to ban gambling on the Olympics and high school and college sports events, and spending more money on detecting drug use. Integrity? How about Iraq rather than high school football doping scandals? &quot;;-&gt;&quot;" created="Sun, 03 Dec 2006 20:46:57 GMT"/>		<outline text="I've just posted my first podcast. &lt;a href=&quot;http://blog.opiumfield.com/?cat=4&quot;&gt;Here's the webpage&lt;/a&gt; - and &lt;a href=&quot;http://feeds.feedburner.com/tommorrispodcast&quot;&gt;here's the RSS&lt;/a&gt;." created="Sun, 03 Dec 2006 20:22:26 GMT"/>		<outline text="&lt;a href=&quot;http://www.technologyreview.com/InfoTech/17845/&quot;&gt;Wade Roush&lt;/a&gt; has an excellent article on the Semantic Web as Web 3.0 - or Web 2.1 at the very least (I wish someone would point me to the CVS or SVN server where these version numbers are being handed out) - but doesn't talk about one of the things which is driving this - the beautiful, beautiful &lt;a href=&quot;http://www.microformats.org&quot;&gt;Microformats&lt;/a&gt;." created="Sun, 03 Dec 2006 19:42:39 GMT"/>		<outline text="That's a bit odd - Ian has found &lt;a href=&quot;http://www.flickr.com/photos/cubicgarden/312385005/&quot;&gt;Tesco selling Chocolate and Banana sandwiches&lt;/a&gt;." created="Sun, 03 Dec 2006 10:05:17 GMT"/>		<outline text="Only at Sony can a promotion be seen as a demotion. That's what has happened to Ken Kutagari, the guy who introduced two really great consoles and then fucked it all up by selling a gigantic and expensive monster of a console. So sayeth &lt;a href=&quot;http://gigaom.com/2006/12/02/ken-kutaragi/&quot;&gt;GigaOm&lt;/a&gt;." created="Sun, 03 Dec 2006 10:01:05 GMT"/>		<outline text="&lt;a href=&quot;http://bokardo.com/archives/why-itunes-needs-an-album-only-enema/&quot;&gt;Joshua Porter&lt;/a&gt; has a post on why iTunes' &quot;Album Only&quot; restrictions suck arse." created="Sun, 03 Dec 2006 09:37:56 GMT"/>		<outline text="A mistake" created="Sun, 03 Dec 2006 12:35:51 GMT">			<outline text="I've got this &lt;i&gt;really rad&lt;/i&gt; idea. All the kids are doing this crazy blogging thing and hanging out on MySpace and posting their videos on YouTube." created="Sun, 03 Dec 2006 12:35:59 GMT"/>			<outline text="Why don't we set up a corporate-branded version of YouTube where they can upload videos about how cool we are?" created="Sun, 03 Dec 2006 12:39:29 GMT"/>			<outline text="I mean, we're selling a lifestyle, and they are buying it. I forgot what was it we sell again? Was it beer? Trainers? iPod stuff? I dunno. The consumers will just love it." created="Sun, 03 Dec 2006 12:39:52 GMT"/>			<outline text="They come to our site, post about how cool we are, and we'd like that." created="Sun, 03 Dec 2006 12:41:08 GMT"/>			<outline text="Yep, the invoice will be in the post. Thanks." created="Sun, 03 Dec 2006 12:41:29 GMT"/>			<outline text="*click*" created="Sun, 03 Dec 2006 12:42:02 GMT"/>			<outline text="A day in the life of a (hopefully soon to be unemployed) marketing consultant." created="Sun, 03 Dec 2006 12:42:04 GMT"/>			<outline text="&lt;a href=&quot;http://www.haloscan.com/comments/tommorris/aMistake48855/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCount('aMistake48855');&lt;/script&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.haloscan.com/tb/tommorris/aMistake48855/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCountTB('aMistake48855'); &lt;/script&gt;&lt;/a&gt;"/>			</outline>		<outline text="Some more SPARQL to OPML fun" created="Sun, 03 Dec 2006 13:04:16 GMT">			<outline text="Last month, Danny Ayers described some &lt;a href=&quot;http://dannyayers.com/2006/11/12/sparql2opml-noodling&quot;&gt;sparql2opml noodling&lt;/a&gt; to take some data out of FOAF and turn it in to OPML. It got good reception from us OPML folks - including &lt;a href=&quot;http://feedonomics.grazr.com/index.php/archives/57&quot;&gt;Adam Green&lt;/a&gt;, &lt;a href=&quot;http://www.treesandclouds.net/#%5B%5BWhat%20to%20do%20next%3F%5D%5D&quot;&gt;Richard Edwards&lt;/a&gt;, &lt;a href=&quot;http://eirepreneur.blogs.com/eirepreneur/2006/11/galway_videoblo.html&quot;&gt;James Corbett&lt;/a&gt; and, er, &lt;a href=&quot;http://tommorris.org/blog/2006/11/13#When:01:16:35&quot;&gt;me&lt;/a&gt;." created="Sun, 03 Dec 2006 13:04:25 GMT"/>			<outline text="I've spent the last few weeks playing with RDF stuff, and last Monday bought Shelley Powers' book. I've also got a podcast which I recorded yesterday, which I need to post (there are complications)." created="Sun, 03 Dec 2006 13:09:25 GMT"/>			<outline text="Danny is using the Web to build a pipeline for his SPARQL query and the transformation to OPML. I want to do it on the server side, which is a bit tougher. There are lots of different RDF libraries for different languages. I didn't particularly want to learn Java just to chuck some RDF around, but &lt;a href=&quot;http://jena.sourceforge.net/&quot;&gt;Jena&lt;/a&gt; does provide a way for people who are already using Tomcat/JSP/servlets etc. to join the RDF game." created="Sun, 03 Dec 2006 13:10:10 GMT"/>			<outline text="No, I decided to use &lt;a href=&quot;http://sites.wiwiss.fu-berlin.de/suhl/bizer/rdfapi/&quot;&gt;RAP, the RDF API for PHP&lt;/a&gt;. Now, it's fully acronym compliant - it supports RDF/XML, N3 and GRDDL. It's not the most intuitive API around, but it all kind of works. I've cursed a little bit less with RAP than I have with the DOM (which must be the most cursed about framework around!)." created="Sun, 03 Dec 2006 13:14:27 GMT"/>			<outline text="I can now do on my server everything that Danny was doing with things bouncing around between sparql.org, w3.org and his XSLT file. And &lt;i&gt;more&lt;/i&gt;. The first test project I've done is to try and describe the semantic relationships between public institutions - namely, universities." created="Sun, 03 Dec 2006 13:16:30 GMT"/>			<outline text="I can write a whole load of RDF (either as XML or as N3) and load it in to a database. The way that I do that is that I will use &lt;a href=&quot;http://www.oxygenxml.com/&quot;&gt;oXygen&lt;/a&gt; on Mac to write the XML (or write triples and convert them using &lt;a href=&quot;http://www.mindswap.org/2002/rdfconvert/&quot;&gt;this converter&lt;/a&gt;). Then I post them as a file on my web server. Then I tell RAP to read them in to a MySQL database. It grabs the triples from them and stores them all in a table called &quot;statements&quot; and stores the prefix/namespace data in another table." created="Sun, 03 Dec 2006 13:18:30 GMT"/>			<outline text="Then I write a SPARQL query as basically plain text or plain text with some PHP logic added on top (so, for instance, if I want to change a variable, I can specify it in the URL). This means that instead of sending a SPARQL query as really long encoded data in the URL, I can simply point to a file which will be loaded up, read in and then executed. This makes the system quite a bit more modular. The PHP is there simply so that you can specify things like search queries." created="Sun, 03 Dec 2006 13:22:49 GMT"/>			<outline text="How am I using this in action? Well, I've written an example script. It is simply a list of colleges within a university. I've added two files to the database - one for the University of Oxford and one for the University of London (and, yes, I know that an Oxford college is different from a London college - that's something I've got on hand when designing the RDF schema which will go public - er - whenever)." created="Sun, 03 Dec 2006 13:32:28 GMT"/>			<outline text="You can see the results of the &lt;a href=&quot;http://rdf.opiumfield.com/sparql/collegetest/ox&quot;&gt;Oxford&lt;/a&gt; and &lt;a href=&quot;http://rdf.opiumfield.com/sparql/collegetest/lon&quot;&gt;London&lt;/a&gt; queries by visiting those links. Warning - they are just XML, remember. You should see a list of all of the colleges ordered alphabetically with the URL for their websites." created="Sun, 03 Dec 2006 13:38:39 GMT"/>			<outline text="As Danny's XSLT shows, it's really quite easy to turn this kind of thing in to OPML for display in Grazr." created="Sun, 03 Dec 2006 13:47:31 GMT"/>			<outline text="The ease of development of this approach and the fact that each piece is interchangable makes it so that developing REST APIs is very easy. Of course, there are security issues which one has to deal with, which is why I've only made a limited set of data available (the above two links)." created="Sun, 03 Dec 2006 13:48:33 GMT"/>			<outline text="Now, here's where it gets interesting - imagine if you've got lots of raw data that you want to make available in OPML format so that it can be included in to directories - this approach makes a lot of sense. You store the data as either flat-file RDF or in a relational database (RAP supports MySQL and Microsoft Access - other libraries offer different choices), and then just query the data out. OPML provides the structure and RDF provides the data that gets included within the structure." created="Sun, 03 Dec 2006 13:51:16 GMT"/>			<outline text="It means that the OPML folks can get what they want, but you don't have to specially code anything." created="Sun, 03 Dec 2006 14:13:28 GMT"/>			<outline text="The next thing one could do with SPARQL is actually use the variable names in SPARQL (in this case, ?url and ?college) with generic names. Instead of having a manual stylesheet for turning ?url in to an outline component, we define some new standard variable names - I'm thinking ?text, ?htmlUrl, ?xmlUrl, ?linkUrl and ?includeUrl (the latter being for OPML 2.0 only). Text would be required, and the use of the url names would be there instead of type. So, if you just want a type=&quot;link&quot;, you'd simply specify a ?linkUrl. If you wanted a feed, you'd bash out at least an ?xmlUrl and maybe an ?htmlUrl too." created="Sun, 03 Dec 2006 14:14:14 GMT"/>			<outline text="Stylesheets or processors would then be able to pick them up without having to have any logic in the stylesheet and churn out flat OPML files." created="Sun, 03 Dec 2006 14:23:25 GMT"/>			<outline text="This way, the whole process of producing OPML boils down to formulating a SPARQL query and pointing the results in the right direction. And formulating a SPARQL query need only be as complicated as coming up with one standard one and letting the user change a few variables." created="Sun, 03 Dec 2006 14:24:04 GMT"/>			<outline text="People who aren't XML geeks may read this and think &quot;so what?&quot;. I symphatise. What this means (and, again, I don't claim originality - Danny Ayers has prior art on this) is that we can build applications that bridge between the RDF space and the OPML space (or the RSS space), and we can develop them relatively quickly." created="Sun, 03 Dec 2006 14:24:54 GMT"/>			<outline text="And for the mashup makers, this should mean more public data available - more APIs and the suchlike." created="Sun, 03 Dec 2006 14:27:26 GMT"/>			<outline text="I'm excited by this stuff. Hopefully soon we'll have a fair few more toys to play with! &quot;;-&gt;&quot;" created="Sun, 03 Dec 2006 14:27:54 GMT"/>			<outline text="&lt;a href=&quot;http://www.haloscan.com/comments/tommorris/someMoreSparqlToOpmlFun11495/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCount('someMoreSparqlToOpmlFun11495');&lt;/script&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.haloscan.com/tb/tommorris/someMoreSparqlToOpmlFun11495/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCountTB('someMoreSparqlToOpmlFun11495'); &lt;/script&gt;&lt;/a&gt;"/>			</outline>		<outline text="Generic SPARQL to OPML stylesheet (alpha)" created="Sun, 03 Dec 2006 16:44:02 GMT">			<outline text="I've hacked Danny Ayers' XSL transform to turn any SPARQL result set in to an OPML file. I'm not sure whether he minds." created="Sun, 03 Dec 2006 16:44:15 GMT"/>			<outline text="You can take a look at the XSL file &lt;a href=&quot;http://rdf.opiumfield.com/opmltransform.xsl&quot;&gt;here&lt;/a&gt;. It uses the namespace that my SPARQL processor returns ('s'), though I'm not sure whether that is still relevant if you are using a different namespace (I don't know enough about XML namespaces, so please enlighten me)." created="Sun, 03 Dec 2006 16:44:59 GMT"/>			<outline text="The only problem is priority and overlap. It &lt;i&gt;is&lt;/i&gt; possible to, say, overload the outline element with too many attributes - you can give it an xmlUrl, htmlUrl, includeUrl and linkUrl and it'll try to process all of them. In retrospect, I see it would be possible to use xsl:choose and xsl:when rather than xsl:if, which would neatly solve the problem. Again, this is just for testing - in incarnation two, I'll fix these little annoyances." created="Sun, 03 Dec 2006 16:50:47 GMT"/>			<outline text="This was really pretty easy, and it seems to work with both of the SPARQL examples that I've run." created="Sun, 03 Dec 2006 16:46:38 GMT"/>			<outline text="It is also relatively easy to make a SPARQL-to-RSS converter, which means you could even use an RDF persistent storage database as a very primitive and crazy blogging engine. &quot;;-&gt;&quot;" created="Sun, 03 Dec 2006 16:47:20 GMT"/>			<outline text="So, let's see the result of todays work - &lt;a href=&quot;http://grazr.com/gzpanel.html?file=http://www.w3.org/2005/08/online_xslt/xslt?xslfile=http://rdf.opiumfield.com/opmltransform.xsl&amp;xmlfile=http://rdf.opiumfield.com/sparql/collegetest/lon&amp;content-type=&amp;submit=transform&quot;&gt;Graze the London query&lt;/a&gt; and &lt;a href=&quot;http://grazr.com/gzpanel.html?file=http://www.w3.org/2005/08/online_xslt/xslt?xslfile=http://rdf.opiumfield.com/opmltransform.xsl&amp;xmlfile=http://rdf.opiumfield.com/sparql/collegetest/ox&amp;content-type=&amp;submit=transform&quot;&gt;Graze the Oxford query&lt;/a&gt;." created="Sun, 03 Dec 2006 16:58:57 GMT"/>			<outline text="&lt;a href=&quot;http://www.haloscan.com/comments/tommorris/genericSparqlToOpmlStylesheetAlpha99249/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCount('genericSparqlToOpmlStylesheetAlpha99249');&lt;/script&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.haloscan.com/tb/tommorris/genericSparqlToOpmlStylesheetAlpha99249/&quot;&gt;&lt;script type=&quot;text/javascript&quot;&gt;postCountTB('genericSparqlToOpmlStylesheetAlpha99249'); &lt;/script&gt;&lt;/a&gt;"/>			</outline>		</body>	</opml>