<?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>Marcus Povey &#187; OpenDD</title>
	<atom:link href="http://www.marcus-povey.co.uk/category/software/opendd-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcus-povey.co.uk</link>
	<description>Making the world a better place, one byte at a time...</description>
	<lastBuildDate>Fri, 16 Jul 2010 09:00:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<atom:link rel='hub' href='http://www.marcus-povey.co.uk/?pushpress=hub'/>
		<item>
		<title>Elgg Conference, OpenDD and 1.2</title>
		<link>http://www.marcus-povey.co.uk/2008/12/18/elgg-conference-opendd-and-12/</link>
		<comments>http://www.marcus-povey.co.uk/2008/12/18/elgg-conference-opendd-and-12/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 12:29:54 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[brighton]]></category>
		<category><![CDATA[elggjam]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=122</guid>
		<description><![CDATA[Well, gentle reader, it has been a while since I&#8217;ve had time to sit down and write a blog post. This has been due to a number of reasons &#8211; the main one being that I have been horrifically busy! So what&#8217;s been happening? At the beginning of the month there was the international Elgg [...]]]></description>
			<content:encoded><![CDATA[<p>Well, gentle reader, it has been a while since I&#8217;ve had time to sit down and write a blog post. This has been due to a number of reasons &#8211; the main one being that I have been horrifically busy!</p>
<p>So what&#8217;s been happening?</p>
<p>At the beginning of the month there was the international Elgg Conference held down in Brighton. This went very well, and many thanks once again to the folks down at Brighton Uni for hosting the event and generally making the whole thing possible.</p>
<p>We had a good number of delegates turning up, and I spent most of the day on my feet talking and taking photos.</p>
<p>I gave a short presentation on <a href="http://www.opendd.net">OpenDD</a> and network federalisation (as well as a bit of future gazing). I&#8217;ll post the video soon, but <a href="http://www.marcus-povey.co.uk/wp-content/networkfedralisationandopendd.pdf">the slides are here</a>. For all those who have emailed me about it, I will get back to you but I&#8217;ve been a bit snowed under!</p>
<p>Secondly, we released Elgg 1.2.</p>
<p>This is basically a point release and addresses many of the issues raised with 1.1 including speed and scailability. In terms of page loads, the average page (on a correctly configured server) now comes back in 0.7 to 2 seconds (according to yslow).</p>
<p>Now in the run up to Christmas, I intend to indulge myself and have a look at some ideas I&#8217;ve had but hadn&#8217;t had time to play with&#8230; but more on that later.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/12/18/elgg-conference-opendd-and-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push messaging with OpenDD</title>
		<link>http://www.marcus-povey.co.uk/2008/07/26/push-messaging-with-opendd/</link>
		<comments>http://www.marcus-povey.co.uk/2008/07/26/push-messaging-with-opendd/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 17:02:19 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[messaging]]></category>
		<category><![CDATA[opendd]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=51</guid>
		<description><![CDATA[Federated networks are the future for social networks. Realistically, nobody is going to come along any time soon to challenge the big players like Facebook. But what we can do is allow users to move themselves and their data seamlessly between niche networks, or better yet provide a way of linking up users and data [...]]]></description>
			<content:encoded><![CDATA[<p>Federated networks are the future for social networks. Realistically, nobody is going to come along any time soon to challenge the big players like Facebook. But what we can do is allow users to move themselves and their data seamlessly between niche networks, or better yet provide a way of linking up users and data between networks.</p>
<p>There are technologies around that are all working on bits of the puzzle; <a href="http://en.wikipedia.org/wiki/Openid">OpenID</a>, <a href="http://en.wikipedia.org/wiki/OAuth">OAuth</a> etc. I think <a href="http://www.opendd.net">OpenDD</a> solves a key part of the problem by providing a way to link between and move arbitrary data about in a generic and easily understandable way.</p>
<p><a href="http://www.marcus-povey.co.uk/2008/07/21/syndicating-friends-activity-using-opendd/">In my last post I illustrated the syndication usecase for OpenDD</a>; how you can subscribe to a feed for a user and get a list of their activity in the form of a river. One important thing that I forgot to mention of course is there is absolutely no reason why you couldn&#8217;t use the same technique to subscribe to and receive updates about any resource.</p>
<p>Another powerful use case for OpenDD is its use in a live push context, and that is what I&#8217;m going to write a bit about today. Now we have already touched on the fact that OpenDD components are all atomic; they do not require a great deal of context or state around them, so for example if you establish a relationship between two entities you do not need to include the complete description of the entities in question &#8211; just the relationship.</p>
<p>In the latest specifications I have introduced the concept of being able to unset and remove things, so as well as creating a relationship it is also possible to remove it. This turns OpenDD into quite a powerful tool in your arsenal.</p>
<p>If you take Elgg as an example, Elgg has an events system which we have touched on in <a href="http://www.marcus-povey.co.uk/2008/06/09/adding-to-the-river-in-an-elgg-1-plugin/">previous</a> <a href="http://news.elgg.org/pg/blog/bwerdmuller/read/38/events-and-auditing-in-elgg">articles</a> and as well as providing a syndication of an events log in the form of a river, we can also look at pushing those events <em>as they happen</em> out to interesting parties as a sequence of OpenDD components.</p>
<p>So, for example, you could request to be notified when a user joins a group or when something changes on a file (or indeed any other resource) and this can then be pushed out to you in a way that is simple to understand &#8211; and again, because we have the concept of an UUID, it isn&#8217;t necessary to have the complete context in order for the message to be useful. Everything else can be worked out.</p>
<p>So, using OpenDD, it is now possible to subscribe to users and resources on different networks and receive a feed of updates, but it is also now possible to push messages <em>between</em> networks in an open way that is understood by both platforms.</p>
<p>One of the cool things you can do with that is for example Sharing. In one network you could create a resource, for example a photo of you at a party or a URL you were interested in. Then you could select between the friends on the network you are in but also from <em>friends elsewhere</em> to share the resource with.</p>
<p>The user on the foreign network would then receive an OpenDD push update message saying that you have created a resource and have shared it with them (or rather the platform would receive and interpret it), and because users and the resource are all addressed by UUID the user would be able to see this seamlessly on their own network.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/07/26/push-messaging-with-opendd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Syndicating friends activity using OpenDD</title>
		<link>http://www.marcus-povey.co.uk/2008/07/21/syndicating-friends-activity-using-opendd/</link>
		<comments>http://www.marcus-povey.co.uk/2008/07/21/syndicating-friends-activity-using-opendd/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 14:14:14 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[opendd]]></category>
		<category><![CDATA[river]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=48</guid>
		<description><![CDATA[You are probably all aware of the concept of the River in terms of social networking platforms; being able to see what your friends have been up to as a list of events &#8211; what they have been doing, who they have made their friend etc. This feature &#8211; made popular by the facebook &#8220;mini-feed&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>You are probably all aware of the concept of the River in terms of social networking platforms; being able to see what your friends have been up to as a list of events &#8211; what they have been doing, who they have made their friend etc.</p>
<p>This feature &#8211; made popular by the <a href="http://news.cnet.com/8301-10784_3-6112450-7.html">facebook &#8220;mini-feed&#8221;</a> &#8211; has become one of the things that users expect from any platform they use and is rather compelling.</p>
<p>What if you want to see what they have been doing on other networks? Would it not be a pretty neat thing to be able to subscribe to their activity in order to receive updates about what they have been up to in a similar way as you would be able to subscribe to their blog via <a href="http://en.wikipedia.org/wiki/Rss">RSS</a>?</p>
<p>This turns out to be a simple yet powerful use case for <a href="http://www.opendd.net">OpenDD</a>, and this is how we&#8217;re doing it in the new version of <a href="http://www.elgg.org">Elgg</a>.</p>
<p>I talked a bit about how the river was implemented in Elgg 1.0 in <a href="http://www.marcus-povey.co.uk/2008/06/09/adding-to-the-river-in-an-elgg-1-plugin/">previous</a> <a href="http://www.marcus-povey.co.uk/2008/07/18/changes-to-the-river-code/">articles</a>. In a nutshell we have a system log which stores events as they happen in terms of a simple relationship, e.g. <em>&#8220;User X CREATED BlogPost&#8221;</em>, <em>&#8220;User X UPDATED profile&#8221;</em>, etc.</p>
<p>Once you have that information it becomes very easy to mine that for extra information and turn it into a River event. Essentially, a plugin would create a view on the specific event and entity and then be able to render it as a river item and provide new views on existing data.</p>
<p>If you remember, I also <a href="http://www.marcus-povey.co.uk/2008/07/18/changes-to-the-river-code/">talked about how I changed the river code</a> to use this thing called <code>ElggRiverStatement</code>, which lets you construct the river in a much more linguistic way and also provides all the information needed by the river views.</p>
<p>Creating a &#8220;Friends activity elsewhere&#8221; syndication view becomes quite easy. Essentially, all you need to do is export the system log for a user, which you can do very easily using OpenDD as a sequence of OpenDD Relationships. This is because <em>&#8220;User X CREATED BlogPost&#8221;</em> can be thought of in terms of a relationship.</p>
<p>Once this is done, an aggregation client can retrieve the feeds of all the friends that you&#8217;ve signed up to and then sort the relationships by published data, and then &#8211; because everything has a UUID &#8211; you can then drill down and pull the extra information required &#8211; details about the user who initiated the action, the object the event was performed on, metadata etc.</p>
<p>This essentially means you can construct a succession of <code>ElggRiverStatement</code> objects out of an OpenDD feed. This is quite cool, because it means you can take those objects and inject them into the already existing river views and get a river entry back. This means that for absolutely zero extra work, every plugin has the ability to render a &#8220;Friend elsewhere&#8221; event&#8230; and it becomes seamless!</p>
<p>Additionally, you can look to digging further and getting extra information about the entities involved and actually be able to <em>see</em> the entity in question &#8211; whether by linking to the entity elsewhere or using the information you have about it to render it locally.</p>
<p>This is quite a simple example, but it shows some of the power of OpenDD. Additionally, I should point out that since OpenDD is atomic, you don&#8217;t ever have to get all the information in one go!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/07/21/syndicating-friends-activity-using-opendd/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenDD over Atom</title>
		<link>http://www.marcus-povey.co.uk/2008/05/20/opendd-over-atom/</link>
		<comments>http://www.marcus-povey.co.uk/2008/05/20/opendd-over-atom/#comments</comments>
		<pubDate>Tue, 20 May 2008 08:27:59 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=38</guid>
		<description><![CDATA[One of the often repeated comments that people have had regarding OpenDD was that we should do a version of it embedded in Atom 1. I would therefore like to introduce the first draft of OpenDD over Atom, submitted for discussion. In a nutshell, OpenDD over Atom makes use of Atom&#8217;s ability to embed other [...]]]></description>
			<content:encoded><![CDATA[<p>One of the often repeated comments that people have had regarding <a href="http://www.opendd.net">OpenDD</a> was that we should do a version of it embedded in <a href="http://tools.ietf.org/html/rfc4287">Atom</a> 1.</p>
<p>I would therefore like to introduce the first draft of <a href="http://www.opendd.net/resources/ODD_Over_Atom_V0.1(draft).pdf">OpenDD over Atom</a>, submitted for discussion.</p>
<p>In a nutshell, OpenDD over Atom makes use of Atom&#8217;s ability to embed other formats within the <code>content</code> tag and simply wraps a OpenDD element within an Atom entry with some additional data from the ODD element used in the Atom &#8220;envelope&#8221;</p>
<p>This seemed like the simplest solution, but let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/05/20/opendd-over-atom/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenDD PHP library</title>
		<link>http://www.marcus-povey.co.uk/2008/05/09/opendd-php-library/</link>
		<comments>http://www.marcus-povey.co.uk/2008/05/09/opendd-php-library/#comments</comments>
		<pubDate>Fri, 09 May 2008 20:39:08 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=36</guid>
		<description><![CDATA[I have just uploaded a PHP library for importing and exporting OpenDD documents. It is version 0.1 so it is still very much under development, but it should still be usable. Import example The import function accepts an OpenDD XML document and returns an ODDDocument object, which can then be iterated through to obtain access [...]]]></description>
			<content:encoded><![CDATA[<p>I have just <a href="http://www.opendd.net/resources/opendd-php_0_1.tar.gz">uploaded a PHP library</a> for importing and exporting <a href="http://www.opendd.net">OpenDD</a> documents. It is version 0.1 so it is still very much under development, but it should still be usable.</p>
<p><strong>Import example</strong></p>
<p>The import function accepts an OpenDD XML document and returns an <code>ODDDocument</code> object, which can then be iterated through to obtain access to the <code>ODD*</code> classes.</p>
<p>The XML file:</p>
<blockquote><p><code>&lt;odd version="1.0" generated="Fri, 09 May 2008 18:53:37 +0100"&gt;<br />
&lt;entity uuid="http://www.example.com/a" class="foo" subclass="http://www.example.com/b" /&gt;<br />
&lt;metadata uuid="http://www.example.com/c" entity_uuid="http://www.example.com/a" name="Squid" &gt;paper&lt;/metadata&gt;<br />
&lt;relationship uuid1="http://www.example.com/a" type="hates" uuid2="http://www.example.com/b" /&gt;<br />
&lt;/odd&gt;</code></p></blockquote>
<p>Example code to process it:</p>
<blockquote><p><code>$doc = ODD_Import($in);</code></p>
<p><code>foreach ($doc as $element)<br />
print_r($element); // Just echo, but you should probably do something meaningful.</code></p></blockquote>
<p><strong></strong></p>
<p><strong>Export example</strong></p>
<p>Export involves constructing an <code>ODDDocument</code> object and populating it with various classes, each one representing one of the OpenDD elements.</p>
<p>This object is then serialised.</p>
<p>Here is some example code:</p>
<blockquote><p><code>$out = new ODDDocument(); // Create new document<br />
</code><br />
<code>$entity = new ODDEntity("http://www.example.com/a", "foo", "http://www.example.com/b");<br />
$out-&gt;addElement($entity);</code></p>
<p><code>$meta = new ODDMetaData("http://www.example.com/c", "http://www.example.com/a", "Squid", "paper");<br />
$out-&gt;addElement($meta);</code></p>
<p><code>$rel = new ODDRelationship("http://www.example.com/a", "hates", "http://www.example.com/b");<br />
$out-&gt;addElement($rel);</code></p>
<p><code>echo ODD_Export($out); // Export<br />
</code></p></blockquote>
<p>When I get a chance I&#8217;ll upload some libraries in other languages, but if you feel inclined then feel free to implement your own!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/05/09/opendd-php-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on OpenDD</title>
		<link>http://www.marcus-povey.co.uk/2008/05/08/more-on-opendd/</link>
		<comments>http://www.marcus-povey.co.uk/2008/05/08/more-on-opendd/#comments</comments>
		<pubDate>Thu, 08 May 2008 22:29:47 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=35</guid>
		<description><![CDATA[Just a quick note to join Ben in thanking Marc Canter for inviting us up to his home to discuss (among other things) the Open Data Definition. Marc made an excellent blog post on the subject which clearly illustrates that he completely groks what we are trying to do. We have some exciting times ahead [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://www.marcus-povey.co.uk/wp-content/marc.jpg" alt="" width="250" height="166" />Just a quick note to join <a href="http://ben.elgg.com/?action=comments&amp;postid=48">Ben</a> in thanking <a href="http://blog.broadbandmechanics.com/">Marc Canter</a> for inviting us up to his home to discuss (among other things) the <a href="http://www.opendd.net">Open Data Definition</a>.</p>
<p>Marc made an excellent <a href="http://blog.broadbandmechanics.com/2008/05/opendd">blog post</a> on the subject which clearly illustrates that he completely groks what we are trying to do.</p>
<p>We have some exciting times ahead of us, and are going to try and move this forward as fast as we can.</p>
<p>As always, if you want to be a part of it then <a href="http://groups.google.com/group/open-data-definition">please get involved</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/05/08/more-on-opendd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ODD + OpenID</title>
		<link>http://www.marcus-povey.co.uk/2008/05/07/odd-openid/</link>
		<comments>http://www.marcus-povey.co.uk/2008/05/07/odd-openid/#comments</comments>
		<pubDate>Wed, 07 May 2008 13:39:21 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[elgg]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=31</guid>
		<description><![CDATA[The Elgg team are out in San-Francisco this week meeting up with some of the guys out here and talking about Elgg and ODD. I will blog a bit more about it when I can, its been a bit mad so this is the first chance I&#8217;ve actually had to sit down at the computer [...]]]></description>
			<content:encoded><![CDATA[<p>The Elgg team are out in San-Francisco this week meeting up with some of the guys out here and talking about Elgg and ODD.</p>
<p>I will blog a bit more about it when I can, its been a bit mad so this is the first chance I&#8217;ve actually had to sit down at the computer since getting here (and I&#8217;m only able to do that because the combination of jet lag and the steak the size of my head I had for dinner last night has given me a case of insomnia).</p>
<p>I just wanted to share with you a thought that me and Ben had while enjoying the Californian sunshine inbetween meetings, namely a way to link ODD documents with OpenID.</p>
<p>For descovery of ODD documents, I was planning to use the meta / link approach similar to the way RSS is picked up. Now, it occurs to me that if we modify the spec slightly to say that a UUID should point to a page that can either be an ODD representation of the thing that it&#8217;s referring to or <em>knows where to get it</em> &#8211; i.e. has the appropriate header tag pointing to the url &#8211; then it becomes a trivial matter to turn a UUID into an OpenID URL.</p>
<p>Potentially quite useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/05/07/odd-openid/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ODD and Import / Export</title>
		<link>http://www.marcus-povey.co.uk/2008/04/30/odd-and-import-export/</link>
		<comments>http://www.marcus-povey.co.uk/2008/04/30/odd-and-import-export/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 21:32:34 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[elgg]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=30</guid>
		<description><![CDATA[I have just uploaded the latest draft of the ODD specification to OpenDD.net, so pop over and take a look. Since the last release of the draft I&#8217;ve done a fair amount of work to simplify the format even further; simplifying terminology, clearing up some inconsistencies and dropping namespaces altogether. You&#8217;ll notice that we still [...]]]></description>
			<content:encoded><![CDATA[<p>I have just uploaded the latest draft of the <a href="http://www.opendd.net/resources/ODD_SpecV0.5(draft).pdf">ODD specification</a> to <a href="http://www.opendd.net">OpenDD.net</a>, so pop over and take a look.</p>
<p>Since the last release of the draft I&#8217;ve done a fair amount of work to simplify the format even further; simplifying terminology, clearing up some inconsistencies and dropping namespaces altogether.</p>
<p>You&#8217;ll notice that we still don&#8217;t define any terms. As Ben <a href="http://ben.elgg.com/?action=comments&amp;postid=46">touched on in a recent post</a>, we decided to not confuse the format by trying to tie it to any one application, while keeping it as easy as possibly to actually<em> use</em>. I&#8217;ll cover this in more detail a bit later&#8230;</p>
<p>So, lets talk about how I&#8217;m using ODD to implement full data import and export in the upcoming release of <a href="http://www.elgg.org">Elgg</a> &#8211; <a href="http://www.elgg.com">Elgg 1</a>.</p>
<p>For those who don&#8217;t already know, Elgg is an Open source social networking application engine. The previous version has been downloaded over 100K times, and Import and export was one of the most frequently requested enhancements.</p>
<p><strong>Export</strong></p>
<p>Export was a fairly trivial matter. The new version of Elgg employs a flexible event system, so all I had to do was trigger an &#8220;export&#8221; event.</p>
<p>This event is passed a GUID &#8211; an identifier identifying the thing you are exporting, and elements of the system (and thirdparty plugins) can listen for this event and react accordingly.</p>
<p>The event is essentially asking all parts of the Elgg application &#8211; core and plugins &#8211; <em>&#8220;Tell me all you know about X&#8221;</em>. The export listens to the answers and converts it into an ODD document that looks something like this:</p>
<blockquote><p><code>&lt;odd version="1.0" generated="Wed, 30 Apr 2008 22:21:55 +0100"&gt;</code></p>
<p><code><br />
&lt;entity uuid="http://example.com/odd/78/" class="object" subclass="blog" published="Fri, 18 Apr 2008 11:45:50 +0100" /&gt;</code></p>
<p><code><br />
&lt;metadata uuid="http://example.com/odd/78/attr/owner_uuid/" entity_uuid="http://example.com/odd/78/" name="owner_uuid" published="Fri, 18 Apr 2008 11:45:50 +0100" &gt;http://example.com/odd/77/&lt;/metadata&gt;</code></p>
<p><code><br />
&lt;metadata uuid="http://example.com/odd/78/attr/title/" entity_uuid="http://example.com/odd/78/" name="title" published="Fri, 18 Apr 2008 11:45:50 +0100" &gt;test&lt;/metadata&gt;</code></p>
<p><code><br />
&lt;metadata uuid="http://example.com/odd/78/attr/description/" entity_uuid="http://example.com/odd/78/" name="post" published="Fri, 18 Apr 2008 11:45:50 +0100" &gt;First post&lt;/metadata&gt;</code></p>
<p><code><br />
&lt;metadata uuid="http://example.com/odd/78/metadata/35/" entity_uuid="http://hexample.com/odd/78/" name="tags" type="metadata" owner_uuid="http://example.com/odd/77/" published="Fri, 18 Apr 2008 11:45:50 +0100" &gt;wibble&lt;/metadata&gt;</code></p>
<p><code><br />
&lt;/odd&gt;<br />
</code></p></blockquote>
<p>Here we see an entity (in this case a blog post), and some details about it (the metadata).</p>
<p><strong>Import</strong></p>
<p>Import is traditionally the more complicated part of the equation. ODD is trivial to parse, each tag is atomic and represents exactly one thing, this is a big advantage from the point of view of anyone implementing a reader for it since it makes the whole thing pretty much stateless.</p>
<p>ODD tags arrive, whether as a file to import or as a live feed, and an event is triggered. This event passes around the tag and essentially asks the question <em>&#8220;Does anyone know how to handle this?&#8221;</em>.</p>
<p>The stateless nature of ODD of course meaning that you don&#8217;t have to process the entire file, making it a trivial matter to implement a reader using a <a href="http://en.wikipedia.org/wiki/Simple_API_for_XML">SAX parser</a>.</p>
<p>That just about covers it, I&#8217;ll be posting some example code in a few days (workload permitting) so hopefully people can start getting stuck in. If you want to get involved in development, please head over to the <a href="http://groups.google.co.uk/group/open-data-definition?hl=en">ODD group</a>.</p>
<p>A final note: I will be in San-Francisco all next week, so if you are in the bay area and feel like having a chat about ODD or Elgg, then please get in touch!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/04/30/odd-and-import-export/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ODD ZDNet article</title>
		<link>http://www.marcus-povey.co.uk/2008/04/29/odd-zdnet-article/</link>
		<comments>http://www.marcus-povey.co.uk/2008/04/29/odd-zdnet-article/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 09:17:31 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[data portability]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=29</guid>
		<description><![CDATA[Just a quick heads up, Ben has posted an ODD article over at ZDNet which is well worth a read. Ben discusses ODD and the other data portability formats in the area and explains where ODD fits in. Enjoy!]]></description>
			<content:encoded><![CDATA[<p>Just a quick heads up, <a href="http://ben.elgg.com/">Ben</a> has posted an <a href="http://blogs.zdnet.com/social/?p=477">ODD article</a> over at ZDNet which is well worth a read.</p>
<p>Ben discusses ODD and the other data portability formats in the area and explains where ODD fits in.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/04/29/odd-zdnet-article/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ODD @ OGN</title>
		<link>http://www.marcus-povey.co.uk/2008/04/23/odd-ogn/</link>
		<comments>http://www.marcus-povey.co.uk/2008/04/23/odd-ogn/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 11:53:18 +0000</pubDate>
		<dc:creator>Marcus Povey</dc:creator>
				<category><![CDATA[OpenDD]]></category>
		<category><![CDATA[Oxford Geek Nights]]></category>
		<category><![CDATA[oxford geek night]]></category>

		<guid isPermaLink="false">http://www.marcus-povey.co.uk/?p=26</guid>
		<description><![CDATA[Last night I had the privilege of giving a short talk at the Oxford Geek Night about the Open Data Definition. Its been a while since I have done anything remotely like public speaking so I was rather glad that the event had plenty of &#8220;Free as in Beer&#8221; beer. Those of you who are [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left;" src="http://oxford.geeknights.net/images_animals/6.jpg" alt="" width="161" height="130" />Last night I had the privilege of giving a short talk at the <a href="http://oxford.geeknights.net/2008/apr-22nd/">Oxford Geek Night</a> about the <a href="http://www.opendd.net">Open Data Definition</a>.</p>
<p>Its been a while since I have done anything remotely like public speaking so I was rather glad that the event had plenty of &#8220;Free as in Beer&#8221; beer.</p>
<p>Those of you who are interested, I have uploaded a PDF version of my slides <a href="http://www.marcus-povey.co.uk/wp-content/odd_geeknightpresentation.pdf">here</a>.</p>
<p>ODD has generated a fair amount of comment. One commenter suggested that we were re-inventing the wheel somewhat.</p>
<p>Maybe that is partially true &#8211; there are other data portability formats available, RDF for example or SIOC (apparently pronounced &#8220;Shock&#8221;, although I&#8217;m not entirely sure how). The point we are making with ODD is that powerful as many of these formats are, they are just too complicated and in many cases ambiguous, and for those reasons are not going to see widespread adoption.</p>
<p>Tracked vehicles are very powerful and versatile, but sometimes you just need a bike.</p>
<p><a href="http://en.wikipedia.org/wiki/Rss">RSS</a> is a good example of what I&#8217;m talking about. RSS is nice and simple, and as a result has seen widespread industry adoption. Crucially too there are many applications that <strong>consume</strong> RSS as well as just produce it, which is something not many other formats can boast.</p>
<p>Our view is that while many of these formats are academically brilliant and conceptually very clever, but they are just too complicated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcus-povey.co.uk/2008/04/23/odd-ogn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
