<?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/"
	>

<channel>
	<title>Hackdiary &#187; foaf</title>
	<atom:link href="http://www.hackdiary.com/category/foaf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hackdiary.com</link>
	<description></description>
	<lastBuildDate>Mon, 05 Dec 2011 17:15:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Source distribution for Chumpologica now available</title>
		<link>http://www.hackdiary.com/2004/01/24/source-distribution-for-chumpologica-now-available/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=source-distribution-for-chumpologica-now-available</link>
		<comments>http://www.hackdiary.com/2004/01/24/source-distribution-for-chumpologica-now-available/#comments</comments>
		<pubDate>Sat, 24 Jan 2004 19:05:17 +0000</pubDate>
		<dc:creator>Matt Biddulph</dc:creator>
				<category><![CDATA[foaf]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.hackdiary.com/?p=46</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Now available: the first source distribution of <a href="http://www.hackdiary.com/projects/chumpologica/">Chumpologica</a>, the system behind <a href="http://www.planetrdf.com">Planet RDF</a> and the <a href="http://pants.heddley.com/logica/">Daily Chump Chumpologica</a>.</p>
<p><span id="more-46"></span><br />
Although source for an earlier version was <a href="http://www.hackdiary.com/archives/000036.html">previously available</a>, this new version 1.0 includes all the improvements made by myself and <a href="http://journal.dajobe.org">Dave Beckett</a> for Planet RDF. I&#8217;ve also refactored the code to use an external configuration file, and packaged it up using python distutils with a simple control script. This means that a single global installation of the system can be used to run multiple clogica sites on a single machine. It&#8217;ll also make it easy to build distribution packages for Redhat and Debian.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hackdiary.com/2004/01/24/source-distribution-for-chumpologica-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Chumpologica &#8211; an RSS feed combiner</title>
		<link>http://www.hackdiary.com/2003/06/30/the-chumpologica-an-rss-feed-combiner/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-chumpologica-an-rss-feed-combiner</link>
		<comments>http://www.hackdiary.com/2003/06/30/the-chumpologica-an-rss-feed-combiner/#comments</comments>
		<pubDate>Mon, 30 Jun 2003 21:15:13 +0000</pubDate>
		<dc:creator>Matt Biddulph</dc:creator>
				<category><![CDATA[foaf]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.hackdiary.com/?p=39</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>Today we relaunched <a href="http://pants.heddley.com">The Daily Chump</a>, a multi-author IRC-based blog, with a shiny new look and a new feature: the <a href="http://pants.heddley.com/logica/">chumpologica</a>. This is a webpage (and <a href="http://pants.heddley.com/chumpologica.rdf">RSS 1.0 feed</a>) that aggregates entries from blogs written by regular contributors to the Chump. It&#8217;s built using about 150 lines of python and takes its configuration from a <a href="http://pants.heddley.com/logica/blogsources.rdf">FOAF file</a>.</p>
<p><i>Update:</i> I&#8217;ve now packaged and released this project as a <a href="http://www.hackdiary.com/projects/chumpologica/">proper distribution</a>.</p>
<p><span id="more-39"></span><br />
<a href="http://xmlns.com/foaf/0.1/">FOAF</a> has a predicate in its vocabulary for indicating that a person has a weblog. <a href="http://www.hackdiary.com/src/bloginfo.py">bloginfo.py</a> uses the <a href="http://www.redland.opensource.ac.uk">Redland RDF framework</a> to read the FOAF file and find the details of each weblog. It uses the very latest version of Redland&#8217;s python support (which contains support for iterators, allowing nice syntax such as: <code>for statement in model: print statement.subject</code>) which is only available in the <a href="http://www.redland.opensource.ac.uk/dist/snapshots/source/">nightly source snapshots</a> at the time of writing.</p>
<p><a href="http://www.hackdiary.com/src/chumpologica.py">chumpologica.py</a> is the program start point. It uses <a href="http://www.diveintomark.org/projects/rss_parser/">Mark Pilgrim&#8217;s RSS parser</a> to read in the RSS feeds, and puts the entries into a listed sorted by date. The date is taken from the entry&#8217;s Dublin Core date property, unless that&#8217;s missing in which case the time of retrieval is used. A hash is kept of entries seen on previous runs so that we don&#8217;t get duplicate entries. After a run, the entries and hashes are pickled (serialised) into a file for reuse on the next run.</p>
<p>If new entries were found, <a href="http://www.mnot.net/python/RSS.py">Mark Nottingham&#8217;s RSS.py</a> is invoked to output a new RSS 1.0 file using the newest 30 items. Weblog information taken from the FOAF file is stored along with each entry using standard Dublin Core tags such as <i>relation</i> to point to the original blog and <i>creator</i> to give the name of the writer. The resulting RSS file is sufficient to be transformed using XSLT into the final webpage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hackdiary.com/2003/06/30/the-chumpologica-an-rss-feed-combiner/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Sha1ing, smushing and aggregating FOAF</title>
		<link>http://www.hackdiary.com/2003/02/03/sha1ing-smushing-and-aggregating-foaf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sha1ing-smushing-and-aggregating-foaf</link>
		<comments>http://www.hackdiary.com/2003/02/03/sha1ing-smushing-and-aggregating-foaf/#comments</comments>
		<pubDate>Mon, 03 Feb 2003 00:02:38 +0000</pubDate>
		<dc:creator>Matt Biddulph</dc:creator>
				<category><![CDATA[foaf]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[rdf]]></category>

		<guid isPermaLink="false">http://www.hackdiary.com/?p=24</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>To normalise and aggregate FOAF metadata related to photographs, I needed some new code to:</p>
<ul>
<li>convert foaf:mbox entries to privacy-protected foaf:mbox_sha1sum entries.</li>
<li>normalise statements of the form &#8220;PICTURE depicts PERSON&#8221; to &#8220;PERSON depiction PICTURE&#8221;.</li>
<li>smush disparate references to the same person into references to a single definition of that person.</li>
<li>extract depiction triples from a model and copy just the bare minimum of information related to those depictions</li>
</ul>
<p>So I wrote <a href="http://www.hackdiary.com/src/foaftool-0.2.tar.gz">foaftool</a>, a Java class that uses <a href="http://www.hpl.hp.com/semweb/jena.htm">Jena</a>. The tarball also contains a couple of servlets that can be used to transform existing content on the web.</p>
<p><span id="more-24"></span><br />
The first servlet will transform foaf:mbox triples in FOAF data into appropriately-encoded foaf:mbox_sha1sum triples. This makes <a href="http://heddley.com/edd/foaf.rdf">Edd&#8217;s FOAF file</a> look <a href="http://www.hackdiary.com/foaf/apps/foafToSha1?foaf=http://heddley.com/edd/foaf.rdf">like this</a>. Using an extra querystring parameter, it optionally <a href="http://www.hackdiary.com/foaf/apps/foafToSha1?foaf=http://heddley.com/edd/foaf.rdf&#038;convertDepicts=1">converts foaf:depicts triples to foaf:depiction</a>. foaf:depicts isn&#8217;t actually in the official <a href="http://xmlns.com/foaf/0.1/">FOAF schema</a> at the time of writing, although it is in informal use in many places as it sometimes makes for more elegant modeling. Normalising to foaf:depictions makes working with large amounts of FOAF data simpler.</p>
<p>Writing the <a href="http://rdfweb.org/2001/01/design/smush.html">smushing</a> code was an entertaining diversion. Smushing is important when merging multiple RDF sources. Say you have two sources, <a href="http://www.hackdiary.com/misc/edd1.rdf">edd1.rdf</a> and <a href="http://www.hackdiary.com/misc/edd2.rdf">edd2.rdf</a>, showing where to find photos of Edd. When merged, the graph structure looks like this:</p>
<p><a href="http://www.hackdiary.com/images/edd1.png"><img class="noborder" width="500" height="166" alt="edd1.rdf" src="/images/edd1_small.png" /></a><br />
<a href="http://www.hackdiary.com/images/edd2.png"><img class="noborder" width="468" height="166" alt="edd1.rdf" src="/images/edd2_small.png" /></a></p>
<p>This is because without smushing, the anonymous nodes that both have Edd&#8217;s email address are not equated. The <a href="http://www.hackdiary.com/foaf/apps/aggregateDepictions?rdf=http://www.hackdiary.com/misc/edd1.rdf&#038;rdf=http://www.hackdiary.com/misc/edd2.rdf">smushed version</a> (smushed on mbox_sha1sum using a foaftool servlet) looks like this:</p>
<p><a href="http://www.hackdiary.com/images/eddsmush.png"><img class="noborder" width="502" height="209" alt="edd1.rdf" src="/images/eddsmush_small.png" /></a></p>
<p>With the data in normalised and merged form, I want to extract just the triples of the form &#8220;X foaf:depiction [picture uri]&#8221; and the related foaf:name and foaf:mbox_sha1sum triples. With the foaftool code, I can now <a href="http://www.hackdiary.com/foaf/apps/aggregateDepictions?rdf=http://www.picdiary.com/rss/xcom.rss&#038;rdf=http://www.picdiary.com/rss/foafmeet.rss&#038;rdf=http://www.picdiary.com/rss/barcelona_conf.rss&#038;rdf=http://www.picdiary.com/rss/pantsconkeevil.rss">merge and extract depictions</a> from any number of RDF sources.</p>
<p>Comments and bugfixes are very welcome; the code has only been tested as far as the junit tests included in the tarball.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hackdiary.com/2003/02/03/sha1ing-smushing-and-aggregating-foaf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dodgy SVG version of picdiary slides page</title>
		<link>http://www.hackdiary.com/2002/12/23/dodgy-svg-version-of-picdiary-slides-page/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dodgy-svg-version-of-picdiary-slides-page</link>
		<comments>http://www.hackdiary.com/2002/12/23/dodgy-svg-version-of-picdiary-slides-page/#comments</comments>
		<pubDate>Mon, 23 Dec 2002 13:32:00 +0000</pubDate>
		<dc:creator>Matt Biddulph</dc:creator>
				<category><![CDATA[foaf]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[wordnet]]></category>

		<guid isPermaLink="false">http://www.hackdiary.com/?p=11</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>I felt it was time to learn a bit more about SVG and do some concrete work with it. I made a fairly simple SVG document that renders picdiary feeds. It parses the RSS and builds the page on the client-side using Jim Ley&#8217;s lovely <a href="http://jibbering.com/rdf-parser/">javascript rdf parser</a>.</p>
<p>Compare the <a href="http://www.picdiary.com/new/xcom">HTML version</a> to the <a href="http://www.picdiary.com/svg/pics.svg?rss=xcom.rss">SVG version</a>. There&#8217;s nothing in the SVG version that couldn&#8217;t be rendered in HTML; the interest was in doing the job entirely client-side.</p>
<p><span id="more-11"></span><br />
The system builds links into <a href="http://www.foafnaut.org">foafnaut</a> and my wordnet picture hierarchy when it finds appropriate metadata about a picture.</p>
<p>Jim&#8217;s parser page says the RDF parser needs at least version 5.5 to run under IE. Javascript in SVG is a pain to debug in mozilla; you don&#8217;t seem to be able to use mozilla&#8217;s javascript console or debugger.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hackdiary.com/2002/12/23/dodgy-svg-version-of-picdiary-slides-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>To rss-dev about picdiary</title>
		<link>http://www.hackdiary.com/2002/12/17/to-rss-dev-about-picdiary/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=to-rss-dev-about-picdiary</link>
		<comments>http://www.hackdiary.com/2002/12/17/to-rss-dev-about-picdiary/#comments</comments>
		<pubDate>Tue, 17 Dec 2002 21:18:00 +0000</pubDate>
		<dc:creator>Matt Biddulph</dc:creator>
				<category><![CDATA[foaf]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[rdf]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.hackdiary.com/?p=10</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p>A mail <a href="http://groups.yahoo.com/group/rss-dev/message/4580">sent to RSS-DEV</a> about work in progress on picdiary and its use of RSS for cataloguing photos.</p>
<p><span id="more-10"></span><br />
<b>Subject:  Re: [RSS-DEV] RSS and Libraries</b><br />
From:  mb@p&#8230;<br />
Date:  Tue Dec 17, 2002  9:18 pm</p>
<p>On Mon, Dec 16, 2002 at 05:14:33PM +0000, Libby Miller wrote:<br />
> On Mon, 16 Dec 2002, se teague wrote:<br />
> > I&#8217;m so happy to find this group! I&#8217;ve been developing an<br />
> > RSS/Perl/PHP/MySQL based rss program to generate news and events for the<br />
> > academic library I work for. i do have a question though; We haven&#8217;t<br />
> > tackled associating images with RSS items rather than channels. Has<br />
> > anyone done this before? Any best practices out there?<br />
><br />
> I rather like what Matt Biddulph&#8217;s been doing, e.g.:<br />
> <a href="http://www.picdiary.com/rss/barcelona_conf.rss">http://www.picdiary.com/rss/barcelona_conf.rss</a></p>
<p>Thanks Libby. To (over)elaborate:</p>
<p>My site (<a href="http://www.picdiary.com">http://www.picdiary.com</a>) is just a blog of collections of<br />
pictures. There&#8217;s not much text, the pictures are the main focus and<br />
just have a few lines of description. For a while it&#8217;s been lacking good<br />
search facilities, and was built out of static HTML.</p>
<p>I decided to use RSS 1.0 as the &#8216;container&#8217; format for each picture<br />
collection. RSS works just as well for pictures-as-items as it does for<br />
html-pages-as-items &#8211; they&#8217;re all just web links. So I wrote a bunch of<br />
simple perl scripts to read in RSS and display them as web pages. For<br />
example, The link Libby gave above can be viewed at<br />
<a href="http://www.picdiary.com/new/barcelona_conf?rss=barcelona_conf.rss&#038;page=1"></p>
<p>http://www.picdiary.com/new/barcelona_conf?rss=barcelona_conf.rss&#038;page=1</p>
<p></a><br />
or of course it can be viewed in a newsreader/aggregator.</p>
<p>If you look in the HTML source of that page, you&#8217;ll see a line like<br />
this:</p>
<p>&lt;link rel=&#8221;alternate&#8221; type=&#8221;application/rss+xml&#8221; title=&#8221;RSS&#8221;<br />
href=&#8221;http://www.picdiary.com/rss/barcelona_conf.rss&#8221;&gt;</p>
<p>This is following the rss autodiscovery standard so that spiders can<br />
find the RSS metadata from the webpage.</p>
<p>Using RSS 1.0&#8242;s RDF capability, I can add all sorts of metadata to<br />
channels and items with a few extra tags in the RSS. That particular<br />
feed uses FOAF to say that certain pictures are of people like Libby.<br />
Other (more recent) feeds such as<br />
<a href="http://www.picdiary.com/rss/highwalk.rss">http://www.picdiary.com/rss/highwalk.rss</a> also use Dublin Core to give<br />
the creator and date of the channel, and Wordnet to list keywords<br />
associated with each picture (item).</p>
<p>There&#8217;s a (prerelease) search engine that indexes all the RSS and uses<br />
the Wordnet terms (and exploits Wordnet&#8217;s synonym and hypernym<br />
relationships between words to give better search results) at<br />
<a href="http://www.picdiary.com/cgi-bin/search.pl?word=building">http://www.picdiary.com/cgi-bin/search.pl?word=building</a><br />
If you look &#8216;behind the scenes&#8217; of that search engine at<br />
<a href="http://www.picdiary.com:8180/rss/search?word=building">http://www.picdiary.com:8180/rss/search?word=building</a><br />
then you&#8217;ll see that the search results themselves are returned as<br />
dynamically-built RSS channels then rendered into HTML by some perl. So<br />
you could subscribe to the search results if you wanted to.</p>
<p>Ramble ramble. There&#8217;s quite a lot to say, feel free to followup or mail<br />
me off-list for more information.</p>
<p>Cheers,<br />
Matt.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hackdiary.com/2002/12/17/to-rss-dev-about-picdiary/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

