<?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>gavin.carothers.name</title>
	<atom:link href="http://gavin.carothers.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://gavin.carothers.name</link>
	<description>Collecting the internet&#039;s garbage in O(n)</description>
	<lastBuildDate>Sun, 30 Oct 2011 20:32:29 +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>time vs data</title>
		<link>http://gavin.carothers.name/2011/10/30/time-vs-data/</link>
		<comments>http://gavin.carothers.name/2011/10/30/time-vs-data/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 20:30:56 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[html5]]></category>
		<category><![CDATA[rdfa]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=92</guid>
		<description><![CDATA[There is a bug in HTML5 to remove time and replace it with data. I think in general that &#60;data&#62; isn&#8217;t a bad idea. I agree that only being able to talk about &#60;time&#62; was a bit odd, and that &#8230; <a href="http://gavin.carothers.name/2011/10/30/time-vs-data/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=13240">bug in HTML5 to remove time and replace it with data</a>.</p>
<p>I think in general that <code>&lt;data&gt;</code> isn&#8217;t a bad idea. I agree that only being able to talk about <code>&lt;time&gt;</code> was a bit odd, and that many other values have the same effective use case. As mentioned <a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=13240#c14">by Ian Hixen</a>:</p>
<ul>
<li>dimensionless numbers (2.3)</li>
<li>numbers with units (5kg)</li>
<li>enumerated values, like months (February) or days of the week (Monday)</li>
<li>durations</li>
</ul>
<p>However, I don&#8217;t think that data as it stands right now is done. As this example of the old <code>&lt;time&gt;</code> and new <code>&lt;data&gt;</code> shows there is a fairly heavy semantics loss from the change.</p>
<pre><code>Published &lt;time pubdate datetime="2009-09-15T14:54-07:00"&gt;on 2009/09/15 at 2:54pm&lt;/time&gt; </code></pre>
<p>Assigned data to RDF via magic human transformation step simply to talk about what data is there. Displayed in <a href="http://www.w3.org/TR/turtle/">Turtle</a>.</p>
<pre><code> @prefix magic: &lt;http://gavin.carothers.name/vocabs/magic#&gt; .
&lt;&gt; magic:pubdate "2009-09-15T14:54-07:00"^^xsd:dateTime . </code></pre>
<p>The HTML contains a reasonable amount of data. We know that the contents of datatime is an ISO datatime, we know that the relationship between that date time and the page is it&#8217;s publication date.</p>
<pre><code>Published &lt;data value="2009-09-15T14:54-07:00"&gt;on 2009/09/15 at 2:54pm&lt;/data&gt; </code></pre>
<p>Again magic human transformation to Turtle.</p>
<pre><code>@prefix magic: &lt;http://gavin.carothers.name/vocabs/magic#&gt; .
[] magic:unknown "2009-09-15T14:54-07:00" . </code></pre>
<p>This time around don&#8217;t know much at all. We know that &#8220;2009-09-15T14:54-07:00&#8243; may some how be related to the current page. We don&#8217;t know how the string is formated, nor how the string is related to the page if it is at all.</p>
<p>As currently proposed <code>&lt;data&gt;</code> sure looks like a step backwards, but maybe it can be a step forward.</p>
<p>Just some invalid markup:</p>
<pre><code>&lt;data type="dateTime" value="2009-09-15T14:54-07:00" property="pubdate"&gt; </code></pre>
<p>Just some RDFa:</p>
<pre><code>&lt;data datatype="xsd:dateTime" content="2009-09-15T14:54-07:00" property="magic:pubdate"&gt; </code></pre>
<p>Just some microdata plus some datatype:</p>
<pre><code>&lt;data type="dateTime" value="2009-09-15T14:54-07:00" itemprop="pubdate"&gt; </code></pre>
<p>Adding a generic data element without data typing doesn&#8217;t seem like a good idea. With datatyping I can see it working better then creating an element for every kind of data.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2011/10/30/time-vs-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>schema.org as RDFa (Part I)</title>
		<link>http://gavin.carothers.name/2011/06/04/schema-org-as-rdfa/</link>
		<comments>http://gavin.carothers.name/2011/06/04/schema-org-as-rdfa/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 15:32:17 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[html5]]></category>
		<category><![CDATA[rdfa]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=78</guid>
		<description><![CDATA[schema.org an initiative by Google claims once again that RDFa is too complicated. That&#8217;s not really true. Here in fact are the first examples from schema.org in RDFa. There is a bonus as well for using RDFa rather then Microdata&#8230; &#8230; <a href="http://gavin.carothers.name/2011/06/04/schema-org-as-rdfa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>schema.org an initiative by Google claims once again that RDFa is too complicated. That&#8217;s not really true. Here in fact are the first examples from schema.org in RDFa. There is a bonus as well for using RDFa rather then Microdata&#8230; <a href="http://www.w3.org/2007/08/pyRdfa/Shadow.html">you can test that RDFa is valid and gives you what you expect TODAY</a>. Microdata and schema.org? No validation (STILL!), and no public parsers.</p>
<h2>A movie</h2>
<p>The first example from Schema.org is about marking up a movie:</p>
<dl>
<dt>schema.org </dt>
<dt> </dt>
<dd>
<pre>&lt;div itemscope itemtype ="http://schema.org/Movie"&gt;
  &lt;h1 itemprop="name"&amp;g;Avatar&lt;/h1&gt;
  &lt;div <strong>itemprop="director" itemscope itemtype="http://schema.org/Person"</strong>&gt;
  Director: &lt;span itemprop="name"&gt;James Cameron&lt;/span&gt; (born &lt;span itemprop="birthDate"&gt;August 16, 1954)&lt;/span&gt;
  &lt;/div&gt;
  &lt;span itemprop="genre"&gt;Science fiction&lt;/span&gt;
  &lt;a href="../movies/avatar-theatrical-trailer.html" itemprop="trailer"&gt;Trailer&lt;/a&gt;
&lt;/div&gt;</pre>
</dd>
<dt>RDFa</dt>
<dd>
<pre>&lt;div vocab="http://schema.org/" typeof="Movie"&gt;
 &lt;h1 property="name"&gt;Avatar&lt;/h1&gt;
 &lt;div rel="director"&gt;Director:
   &lt;span typeof="Person"&gt;&lt;span property="name"&gt;James Cameron&lt;/span&gt;
   (born &lt;time property="birthDate" datetime="1954-08-16"&gt;August 16, 1954&lt;/time&gt;)
   &lt;/span&gt;
 &lt;/div&gt;
 &lt;span property="genre"&gt;Science fiction&lt;/span&gt;
 &lt;a rel="trailer" href="../movies/avatar-theatrical-trailer.html"&gt;Trailer&lt;/a&gt;
&lt;/div&gt;</pre>
</dd>
</dl>
<p>That wasn&#8217;t very complicated. In fact compared with the example on Schema.org, why do some attributes need fully qualified URIs/IRIs and some don&#8217;t? How does microdata know that <code>director</code> is refering to schema.org&#8217;s <code>director</code> and not some other one?</p>
<h2>Next is Spinal Tap!</h2>
<pre>&lt;div vocab="http://schema.org/" typeof="Event"&gt;
 &lt;div property="name"&gt;Spinal Tap&lt;/div&gt;
 &lt;span property="description"&gt;One of the loudest bands ever
 reunites for an unforgettable two-day show.&lt;/span&gt;
 Event date:
 &lt;time property="startDate" datetime="2011-05-08T19:30"&gt;May 8, 7:30pm&lt;/time&gt;
&lt;/div&gt;</pre>
<p>Okay not even bothering with the Microdata/schema.org version. There are a few differences but not much. Where is all this complexity that RDFa introduces?</p>
<h2>An offer, for a blender</h2>
<pre>&lt;div vocab="http://schema.org/" type="Offer"&gt;
 &lt;span property="name"&gt;Blend-O-Matic&lt;/span&gt;
 &lt;span property="price"&gt;$19.95&lt;/span&gt;
 &lt;link rel="availability" href="http://schema.org/InStock"/&gt;Available today!
&lt;/div</pre>
<p>Yeah, still not seeing why RDFa is more complicated.</p>
<p>Okay, that&#8217;s all I feel like dealing with before breakfast. Will look a few more later.</p>
<p>In the mean time, gratuitous baby pictures!</p>
<p><embed type="application/x-shockwave-flash" width="288" height="192" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" flashvars="host=picasaweb.google.com&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2F114808080934228018687%2Falbumid%2F5611625358674399761%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
<h2 id="geo-tagging">Update:</h2>
<p>By specific request, RDFa for geo tagging:</p>
<dl>
<dt>schema.org</dt>
<dd>
<pre>&lt;div itemscope itemtype="http://schema.org/Place"
 &lt;h1&gt;What is the latitude and longitude of the &lt;span itemprop="name"&gt;Empire State Building&lt;/span&gt;?&lt;h1&gt;
 Answer:
 &lt;div itemprop="geo" itemscope itemtype="http://schema.org/GeoCoordinates"&gt;
 Latitude: 40 deg 44 min 54.36 sec N
 Longitude: 73 deg 59 min 8.5 dec W
 &lt;meta itemprop="latitude" content="40.75" /&gt;
 &lt;meta itemprop="latitude" content="73.98" /&gt;
 &lt;/div&gt;
&lt;/div&gt;</pre>
</dd>
<dt>schema.org as RDFa</dt>
<dd>
<pre>&lt;div vocab="http://schema.org/" typeof="Place"
 &lt;h1&gt;What is the latitude and longitude of the &lt;span property="name"&gt;Empire State Building&lt;/span&gt;?&lt;h1&gt;
 Answer:
 &lt;div rel="geo"&gt;
 Latitude: 40 deg 44 min 54.36 sec N
 Longitude: 73 deg 59 min 8.5 dec W
 &lt;span typeof="GeoCoordinates"&gt;
 &lt;meta property="latitude" content="40.75" /&gt;
 &lt;meta property="longitude" content="73.98" /&gt;
 &lt;/span&gt;
 &lt;/div&gt;
&lt;/div&gt;</pre>
</dd>
<dt>RDFish RDFa</dt>
<dd>
<pre> &lt;div prefix="schema: http://schema.org/ dc: http://purl.org/dc/terms/ pos: http://www.w3.org/2003/01/geo/wgs84_pos#"
  typeof="schema:Place pos:SpatialThing"
 &lt;h1&gt;What is the latitude and longitude of the &lt;span property="dc:title schema:name"&gt;Empire State Building&lt;/span&gt;?&lt;h1&gt;
 Answer:
 Latitude: 40 deg 44 min 54.36 sec N
 Longitude: 73 deg 59 min 8.5 dec W
 &lt;meta property="pos:latitude schema:latitude" content="40.75" /&gt;
 &lt;meta property="pos:longitude schema:longitude" content="73.98" /&gt;
 &lt;/div&gt;
&lt;/div&gt;</pre>
</dd>
</dl>
<p>As with the earlier conversions, these are 5 minute jobs without really spending much time thinking about them. But these WORK, can be validated today and are still very simple. The RDFish version above does start to use some RDFa features that are considered confusing. It uses 3 vocabularies rather then just one. To do this it does use the much feared PREFIX. I&#8217;ve covered <a href="http://gavin.carothers.name/2009/09/22/prefixes-not-that-complicated/">my opinion of prefixes</a> before. I still stand by my statement that prefixes are simply not that complicated. Also, the RDFish version does drop the added <code>GeoCoordinates</code> instance, and intermediate <code>schema:geo</code> property, didn&#8217;t really see why they were there. Other possible improvements include adding datatypes to the properties in RDFa, but that&#8217;s not really necessary in this case.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2011/06/04/schema-org-as-rdfa/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RDF Database Expectations</title>
		<link>http://gavin.carothers.name/2010/09/02/rdf-database-expectations/</link>
		<comments>http://gavin.carothers.name/2010/09/02/rdf-database-expectations/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 20:45:30 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[rdfa]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=63</guid>
		<description><![CDATA[Background I use RDF databases to store 100% of O&#8217;Reilly Media&#8217;s product metadata. The catalog pages, shopping cart, electronic media distribution, product registration process, ONIX distribution, and most internal product reporting is based on RDF. The following are observations of &#8230; <a href="http://gavin.carothers.name/2010/09/02/rdf-database-expectations/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Background</h2>
<p>I use RDF databases to store 100% of O&#8217;Reilly Media&#8217;s product metadata. The catalog pages, shopping cart, electronic media distribution, product registration process, ONIX distribution, and most internal product reporting is based on RDF. The following are observations of what is necessary from a RDF database in order to successfully and easily build a similar system. As for what the clients need to be able to do&#8230; <a href="http://github.com/oreillymedia/pymantic">working on that</a>. The features required are listed in descending order of priority to me.</p>
<h2>SPARQL</h2>
<p>An RDF or semantic database that does not support at least <a href="http://www.w3.org/TR/rdf-sparql-query/">SPARQL 1.0</a> is not interesting. Writing queries in Prolog, XQuery, or another DSL is not acceptable. Getting folks to understand graphs and RDF is hard enough without also having to teach them languages that don&#8217;t work easily with graphs.</p>
<h2>Correct</h2>
<p>When running a simple query that works fine on many other  implementations I don&#8217;t expect to find INCORRECT results. Throwing  errors and saying something is unimplemented isn&#8217;t great but far better  then returning results that are just WRONG.</p>
<h2>SPARQL +</h2>
<p>SPARQL doesn&#8217;t really do enough without extensions. The features I&#8217;ve found to be most useful are <a href="http://jena.sourceforge.net/ARQ/assignment.html">LET</a>, and <a href="http://jena.sourceforge.net/ARQ/group-by.html">GROUP BY</a>. LET can be used to &#8220;fake&#8221; bind parameters, create synthetic values for reports and make complex queries much simpler. Without GROUP BY nasty post processing is often necessary to produce summary reports from SPARQL queries. Other helpful functions are the XPath functions, a good set of always useful tools that I already know from years of work in XSLT and XQuery.</p>
<h2>Named Graphs</h2>
<p>Named graphs allow me to treat the RDF database as a document store. This rapidly reduces the complexity of loading and managing ETL operations. The <a href="http://www.w3.org/TR/sparql11-http-rdf-update/">SPARQL 1.1 Uniform HTTP Protocol for Managing RDF Graphs</a> makes me very happy, and maps neatly on top of solutions that I&#8217;d already implemented before I even knew the SPARQL 1.1 Working group existed. See <a href="http://github.com/oreillymedia/Tenuki">Tenuki</a> for my own implementation of graph updates over HTTP. <a href="http://vocab.org/changeset/schema.html">ChangeSets</a> Talis style are useful too, but have been more complicated to generate then I had expected.</p>
<h2>Concurrent</h2>
<p>I expect to be able to write updates to graphs and read from graphs at the same time. I&#8217;ve encountered limitations related to Multi Reader Single Writer locks at the graph level, dataset level, and server level.</p>
<h2>Parses RDF/XML</h2>
<p>Twice now I&#8217;ve come across products that fail to parse perfectly valid RDF/XML. We aren&#8217;t talking complex RDF/XML structures either, just simple Literals and XMLLiterals that contain non ASCII data, or XML mixed content.</p>
<h2>Installable</h2>
<p>A database server should not require me to write software in order to use it. Simple command line clients and simple start stop scripts should not be too much to ask.</p>
<h2>SPARQL EXPLAIN</h2>
<p>SPARQL query optimizers tend to be odd beasts. I have found that it&#8217;s really easy to go from a query that runs in no measurable time to one that will, for all practical purposes, never complete. Understanding why with EXPLAIN is hard, without EXPLAIN impossible. Profiling would of course be better, but I’ll take what I can get.</p>
<h2>Documented</h2>
<p>If your RDF database supports a feature but doesn&#8217;t document the feature anywhere, it doesn&#8217;t support the feature. I&#8217;m should not need to read source code to find out what SPARQL syntax and extensions the database supports. If your products is a closed source RDF database Documentation should really be at the top of this list as I can’t figure it out for myself by reading the code.</p>
<h2>License</h2>
<p>I get that databases are big money. I know Oracle owns MySQL now. It doesn’t matter. Rails, Django, Pylons, Wicket, insert favorite SQL based web framework here would not have existed without a good enough SQL database like MySQL or Postgres. A semantic web framework will be hobbled by only high cost commercial backends. A commercial database means that we can&#8217;t contribute fixes even if we want to.</p>
<h2>Conclusion</h2>
<p>I&#8217;ll deal, and do deal with a lack of most of these. But each time one of these features is missing it&#8217;s harder and harder for me to sell the idea of using RDF and semantic databases to management. The benefits of using RDF do in fact make up for missing tons of these features, but if we want RDF to accepted as a model for day to day development on a par with SQL databases these need to be addressed.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2010/09/02/rdf-database-expectations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prefixes, not that complicated.</title>
		<link>http://gavin.carothers.name/2009/09/22/prefixes-not-that-complicated/</link>
		<comments>http://gavin.carothers.name/2009/09/22/prefixes-not-that-complicated/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 23:32:21 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=44</guid>
		<description><![CDATA[The use of prefixes that can be bound to arbitrary strings then combined with other strings to form a third set of string is IMHO too complicated for a technology intended for broad Web deployment (e.g. in text/html). Bug 7670 &#8230; <a href="http://gavin.carothers.name/2009/09/22/prefixes-not-that-complicated/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>The use of prefixes that can be bound to arbitrary strings then combined with<br />
other strings to form a third set of string is IMHO too complicated for a<br />
technology intended for broad Web deployment (e.g. in text/html).</p></blockquote>
<p><cite><a href="http://www.w3.org/Bugs/Public/show_bug.cgi?id=7670">Bug 7670 &#8211; Use of prefixes is too complicated for a Web technology</a></cite></p>
<p>As stated I&#8217;m not really convinced. A few nights ago when I first saw this I was slightly upset, my wife asked what was wrong. I ended up bring a pad of paper to bed in order to explain. Nothing like XML/RDF prefixes for pillow talk. I should point out that my wife knows only some HTML and next to nothing about RDF or XML. She does have a degree (German and History, it&#8217;s important, we&#8217;ll get back to this), I don&#8217;t.</p>
<p>Anyway, as it turns out it&#8217;s reasonably easy to write triples on paper using N3 notation. After about 10 minutes my wife was having no trouble understanding how to write statements like &#8220;The article about Michelle Obama on The Drudge Report was issued on 2009-09-18.&#8221; Then on a new page I wrote down a changed a prefix definition! THE HORRORS! dc: now stood for http://www.dccomics.com, &#8220;Well, that&#8217;s not the same dc, so I guess I need to use another prefix for the Dublin thingy.&#8221; Not that confused then. She pointed out that the citation method for The Chicago Manual of Style used by a wide range of disciplines and a wide range of people is far more complicated. It has features that would horrify the HTML WG. Tokens whose meaning is 100% dependent on scanning backwards for the last instance of another token (ibid), so that while copy editing it&#8217;s massively important to keep track of them when moving blocks of text around. Shortened person and book names that are document dependent, are the norm. Yet hundreds of thousands of people are able to use this complex citation method. Do people screw it up? All the time. Do they understand why and fix it? Of course.</p>
<p>We were able to come up with rules that make using prefixes in almost any context simpler. Note, these are for the most part AUTHORING guidelines, not requirements when reading:</p>
<ol>
<li>Reusing the same prefix in the same document with different meanings is horribly confusing (&#8220;If you did that, I&#8217;d break your figures.&#8221;). Possible to figure out, but not really desirable. Seems like a reasonable place for a warning.</li>
<li>Defining all the prefixes in one place makes it simpler to keep track of them. But understood when it would be simpler to define a new prefix for a section of content.</li>
<li>&#8220;Couldn&#8217;t you have a simple tool that just shows you what prefixes are defined at any point in the document?&#8221; How such a tool has failed to exist in the XML world&#8230; may write this.</li>
</ol>
<p>I really don&#8217;t think prefixing as too complicated for wide adoption. Document authors today deal with complex style guides like <em>The Chicago Manual of Style</em>, the <em>Modern Language Association</em>, and <em>APA</em>. All of these are at least as complicated as the notion of prefixing, some more complicated.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/09/22/prefixes-not-that-complicated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Understanding Microdata, now with more understanding</title>
		<link>http://gavin.carothers.name/2009/08/18/understanding-microdata-now-with-more-understanding/</link>
		<comments>http://gavin.carothers.name/2009/08/18/understanding-microdata-now-with-more-understanding/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 16:44:11 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[html5]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=36</guid>
		<description><![CDATA[Okay, I&#8217;m giving this whole HTML5 microdata a shot for real. 4475 HTML pages of it in fact. After reading what Hixie wrote, tried creating a new sample. Didn&#8217;t feel any stranger then the markup for RDFa. From a typing &#8230; <a href="http://gavin.carothers.name/2009/08/18/understanding-microdata-now-with-more-understanding/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Okay, I&#8217;m giving this whole HTML5 microdata a shot for real. 4475 HTML pages of it in fact.</p>
<p>After reading what <a href="http://ln.hixie.ch/">Hixie</a> wrote, tried creating a <a href="http://gavin.carothers.name/microdata/geek-microdata-better.html">new sample</a>. Didn&#8217;t feel any stranger then the markup for RDFa. From a typing perspective, it is annoying to have to type the whole URI, from a reading perspective it&#8217;s much clearer what&#8217;s going on, at least to me. I also won&#8217;t be typing these every time, template systems are neat like that. Now as far as I can tell the XHTMLy solution to this using XML entities is not supported in HTML5.</p>
<p>Should have known better then to jump right from the sample into doing template markup. Having spent the morning making sure that I was producing valid HTML5, the addition of microdata caused errors at Validator.nu. It seems the method of using <code>&lt;link&gt;</code> elements is not currently supported by the validator. In fact even our sample <a href="http://validator.nu/?doc=http%3A%2F%2Fgavin.carothers.name%2Fmicrodata%2Fgeek-microdata-better.html&amp;showsource=yes">fails to validate</a>. Ugh.</p>
<p>Philip&#8217;s parser works nicely for testing to see if what I have is working, given that I can&#8217;t use the validator.</p>
<p>At this point I have markup for the relationships of Manifestations of an edition (Expression). Adding the markup for the publication dates was much more unpleasant. It seems that I have to repeat the whole:</p>
<pre>&lt;some_tag
     itemprop="http://vocab.org/frbr/core#embodiment"
     item="http://purl.org/vocab/frbr/core#Manifestation"&gt;
     &lt;link itemprop="about" href="${product.subject}"&gt;</pre>
<p>every time I need to talk about ${product.subject}. And the microdata parser happily adds the relationship all over again.</p>
<pre>  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596007683.BOOK&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596806316.BOOK&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596802189.EBOOK&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596802028.SAF&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596007683.BOOK&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596806316.BOOK&gt; ;
  &lt;http://vocab.org/frbr/core#embodiment&gt; &lt;urn:x-domain:oreilly.com:product:9780596802189.EBOOK&gt; .
    .</pre>
<p>There is a great deal of markup smell coming <a href="http://gavin.carothers.name/microdata/geek-real-microdata.html">from this page now</a>. I think from here I&#8217;m going to try this as XHTML (5?) and go back to RDFa and see how that goes.</p>
<p>Will send this and earlier post to WhatWG mailing list as soon as my subscription to the WhatWG mailing list is approved.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/08/18/understanding-microdata-now-with-more-understanding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Trying to understand Microdata? RDFa?</title>
		<link>http://gavin.carothers.name/2009/08/13/trying-to-understand-microdata-rdfa/</link>
		<comments>http://gavin.carothers.name/2009/08/13/trying-to-understand-microdata-rdfa/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 04:36:43 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[html5]]></category>
		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=26</guid>
		<description><![CDATA[Been trying to follow the RDFa, microdata messwork. This isn&#8217;t academic. I have a nice open ticket that says &#8220;Insert inline metadata into O&#8217;Reilly Catalog pages&#8221; which is due in a large release at the end of September. Do I &#8230; <a href="http://gavin.carothers.name/2009/08/13/trying-to-understand-microdata-rdfa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Been trying to follow the RDFa, microdata <del datetime="2009-08-14T03:31:03+00:00">mess</del>work. This isn&#8217;t academic. I have a nice open ticket that says &#8220;Insert inline metadata into O&#8217;Reilly Catalog pages&#8221; which is due in a large release at the end of September.</p>
<p>Do I expect Google to index my page a whole lot better? Nah. (That&#8217;s why we&#8217;re doing complete HTML chapters of our books, and full HTML Table of Contents). Do I expect our internal tools to index it better? Maybe, if I pray to the right search gods. Can I think of some some crazy shit to do in jQuery with the few attributes I have in there? Oh yes. What exactly is going to come of us putting micodata in our pages? No clue, but then we didn&#8217;t really know what Web 2.0 was in 2004, or this strangeWorld Wide Web ( <a href="http://www.archive.org/details/wholeinternet00krolmiss">Online Whole Internet Catalog</a>, in which we uh, printed the internet) thing was in 1992.</p>
<p>Lets get started. I know what metadata I need to express. Here is a short version of it expressed in Turtle. There are a number of other fields, but this will give you the gist.</p>
<pre>@prefix dc: &lt;http://purl.org/dc/terms/&gt; .
@prefix frbr: &lt;http://purl.org/vocab/frbr/core#&gt; .

&lt;http://purl.oreilly.com/works/45U8QJGZSQKDH8N&gt; a frbr:Work ;
     dc:creator "Wil Wheaton"@en ;
     dc:title "Just a Geek"@en ;
     frbr:realization &lt;http://purl.oreilly.com/products/9780596007683.BOOK&gt;,
         &lt;http://purl.oreilly.com/products/9780596802189.EBOOK&gt; . 

&lt;http://purl.oreilly.com/products/9780596007683.BOOK&gt; a frbr:Expression ;
     dc:type &lt;http://purl.oreilly.com/product-types/BOOK&gt; . 

&lt;http://purl.oreilly.com/products/9780596802189.EBOOK&gt; a frbr:Expression ;
     dc:type &lt;http://purl.oreilly.com/product-types/EBOOK&gt; .</pre>
<p>This sample uses two vocabularies that exist in the wild. <a href="http://dublincore.org/documents/dcmi-terms/">Dublin Core</a>, which is a very mature standard developed by a reasonably heavy weight process with many serializations, and uses. FRBR too is a standard developed by a rather austere body the <a title="International Federation of Library Associations and Institutions" href="http://en.wikipedia.org/wiki/International_Federation_of_Library_Associations_and_Institutions">International Federation of Library Associations and Institutions</a> the <a href="http://vocab.org/frbr/core">RDF realization</a> of it however isn&#8217;t from them but rather a few guys who needed to represent it. Reasonably smart few guys, but no giant standards body here.</p>
<p>Took about 15 minutes to whip up a <a href="http://gavin.carothers.name/microdata/geek-rdfa.html">simple RDFa based representation</a>. Now, I know RDF reasonably well, XML very well, and have decent HTML skills. So I admit my experience is not going to be the norm, but it didn&#8217;t feel a whole lot harder then the first time I was trying to use hCard. I screwed up a few times, mixing up where to use rel= vs. property=. I also forgot that I can&#8217;t just stick a &lt;UL&gt; in another &lt;UL&gt;, need the picky &lt;LI&gt;, also left off at least one close tag. Made all those mistakes  in just 32 lines of HTML. But a few quick iterations with validation and it was all green check boxes. I screwed up my late night hand written HTML at about the same rate I screwed up RDFa attributes. I had read the RDFa primer two months ago, but didn&#8217;t remember much other then there were some attributes and they went on some tags. Didn&#8217;t use the primer, just looked at the example content from <a href="http://www.ebusiness-unibw.org/wiki/Rdfa4google">RDFa4Google</a>. Used <a href="http://torrez.us/rdfa/">Elias Torres RDFa parser</a> to test my results and <a href="http://validator.w3.org/">validator.w3.org</a> for my HTML.</p>
<p>Felt reasonably happy with my RDFa result. Worked as expected. Microdata time!</p>
<p>Okay, got my Microdata spec. Finding a validator or parser however did not go well. 5 minutes in Google and Bing, turned up the expected HTML5 validator.nu but nothing in the way of a microdata validator or parser. I&#8217;ll be honest I was very tempted to stop here. Given the mistakes I made with RDFa, I&#8217;m very skeptical of my ability to write Microdata without the help of a parser. But I imagine there is one, and once I post this someone will tweet about it 5 minutes later.</p>
<p>Huh, okay, I have my outer item for the Work:</p>
<pre>&lt;div id="http://purl.oreilly.com/works/45U8QJGZSQKDH8N"
                item="http://purl.org/vocab/frbr/core#Work"&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;label&gt;Title:&lt;/label&gt;
          &lt;span itemprop="http://purl.org/dc/terms/title"&gt;
            Just a Geek&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;label&gt;By&lt;/label&gt;
          &lt;span itemprop="http://purl.org/dc/terms/creator"&gt;
            Wil Wheaton&lt;/span&gt;&lt;/li&gt;</pre>
<p>That wasn&#8217;t very hard at all. I&#8217;m completely lost at how to relate that work to the two expressions however. It looks like I&#8217;m limited to my microdata being in an &lt;a&gt; tag link to the expressions. And I really don&#8217;t understand the idea behind:</p>
<blockquote><p><a>The value is the element&#8217;s textContent.</a></p></blockquote>
<p><a>Does this mean I can&#8217;t use any data that isn&#8217;t displayed directly on the page? If the data would be better expressed in a machine readable form? In my case product type </a><a href="http://purl.oreilly.com/product-types/EBOOK">http://purl.oreilly.com/product-types/EBOOK</a> really isn&#8217;t very human friendly. Ideas on how to express the same metadata or equivalent in microdata are very welcome. <a href="http://gavin.carothers.name/microdata/geek-microdata.html">This is the best I could do</a>.</p>
<p>I was expecting more tooling and examples from Microdata given it&#8217;s inclusion in HTML5. I was very surprised by the lack of tooling and almost complete lack real world examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/08/13/trying-to-understand-microdata-rdfa/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>shutdown -r now</title>
		<link>http://gavin.carothers.name/2009/07/14/shutdown-r-now/</link>
		<comments>http://gavin.carothers.name/2009/07/14/shutdown-r-now/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 03:42:25 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[self]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=17</guid>
		<description><![CDATA[Running the most recent Ubuntu builds leads to odd things happening from time to time. This mornings little bit of joy was: -bash: shutdown: command not found It seems that somewhere in the last aptitude dist-upgrade the upstart package had &#8230; <a href="http://gavin.carothers.name/2009/07/14/shutdown-r-now/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Running the most recent Ubuntu builds leads to odd things happening from time to time. This mornings little bit of joy was:</p>
<pre>-bash: shutdown: command not found</pre>
<p>It seems that somewhere in the last <code>aptitude dist-upgrade</code> the <code><a href="http://upstart.ubuntu.com/">upstart</a></code> package had been dropped from the selected list. For those wondering upstart provides a large number of the functions need for init.d, and the general run level management process. There used to be a package for systemv level compatibility where shutdown binaries lived, that package no longer existed. Simple solution in the end, just install upstart again.</p>
<p>Why do I bring this up on the blog? Well, it was time to restart the blog again. See a few weeks ago I upgraded it too, to WordPress 2.8.1, or rather WordPress thought it upgraded itself to 2.8.1. What really happened is it completely broke itself to the point that it wasn&#8217;t even logging any errors. This is a nice clean fresh install of WordPress 2.8.1</p>
<p>I do love upgrading software on computers, always thrilling.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/07/14/shutdown-r-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Returning a Power Adapter for an External Hard drive</title>
		<link>http://gavin.carothers.name/2009/05/21/returning-a-power-adapter-for-an-external-hard-drive/</link>
		<comments>http://gavin.carothers.name/2009/05/21/returning-a-power-adapter-for-an-external-hard-drive/#comments</comments>
		<pubDate>Fri, 22 May 2009 03:32:52 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[customer service?]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=13</guid>
		<description><![CDATA[Replying to your email can you please provide me with the following information that the RMA department is required for us to ask our customers. It’s a power adapter, and the cable doesn’t fit in the power adapter socket. Computer &#8230; <a href="http://gavin.carothers.name/2009/05/21/returning-a-power-adapter-for-an-external-hard-drive/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>Replying to your email can you please provide me with the following information that the RMA department is required for us to ask our customers.</p></blockquote>
<p>It’s a power adapter, and the cable doesn’t fit in the power adapter socket.</p>
<blockquote><p>Computer Type:</p></blockquote>
<p>Well, some of my computers are White, some are Black, two are Metal, and one is blue, yet another is two tone Green. Some are Mac’s, some are Intel Macs, some are IBMs, some are ASUS, a few are from Nokia… is this relevant?</p>
<blockquote><p>Speed that your running:</p></blockquote>
<p>Fast? Away for ever buying from OWC again? I guess I’m also sitting down, so I may not be running when you read this.</p>
<blockquote><p>Operating System:</p></blockquote>
<p>It’s a power adapter! It doesn’t have an OS. If it does I am very very afraid of it. There are however computers that I own that run Mac OS X, Windows, Linux (Ubuntu 9.04), QNX, and other OSes, exactly how this has anything to do with a power adapter is somewhat beyond me.</p>
<blockquote><p>Thanks,</p></blockquote>
<p>… someone may want to update what ever computer program (I assume) requires those fields.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/05/21/returning-a-power-adapter-for-an-external-hard-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gratuitous Baby Photos</title>
		<link>http://gavin.carothers.name/2009/04/02/gratuitous-baby-photos/</link>
		<comments>http://gavin.carothers.name/2009/04/02/gratuitous-baby-photos/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 03:28:26 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[super()]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=9</guid>
		<description><![CDATA[Since I finally managed to get the blog started a few things have happened. The most important being that back on January 20th I became a father! My wife points out that it is now April and that I said &#8230; <a href="http://gavin.carothers.name/2009/04/02/gratuitous-baby-photos/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since I finally managed to get the blog started a few things have happened. The most important being that back on January 20th I became a father! My wife points out that it is now April and that I said before that I would post once a week at least. Right, didn’t do that. But still doing better then my LJ account, 3 posts in 5 years. I may not be cut out for the blogging thing. Anyway, baby pictures!</p>
<p><img class="aligncenter size-medium wp-image-10" title="Oliver prepares for his day out" src="http://gavin.carothers.name/wp-content/uploads/2009/07/IMG_3334-1-300x225.jpg" alt="Oliver prepares for his day out" width="300" height="225" /></p>
<p>My wife, a <a href="http://avidinkling.com/">much better blogger</a> tells me I should link to the <a href="http://picasaweb.google.com/kindli/OliverAlbum3">photo album here</a>. I think I’m getting the hang of this. I’m really much better writing blogging software, she’s really much better at using it.</p>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/04/02/gratuitous-baby-photos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gc.isenabled() == True</title>
		<link>http://gavin.carothers.name/2009/01/17/gc-isenabled-true/</link>
		<comments>http://gavin.carothers.name/2009/01/17/gc-isenabled-true/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 03:25:10 +0000</pubDate>
		<dc:creator>gavin</dc:creator>
				<category><![CDATA[self]]></category>

		<guid isPermaLink="false">http://gavin.carothers.name/?p=3</guid>
		<description><![CDATA[Well, maybe the 7th try is the charm. This will be at least my 7th blog like entity. Perhaps this time it will go better. Other blogging attempts have been, “The Flickering Fluorescent”, DNS lapsed. LiveJournal, which has been updated &#8230; <a href="http://gavin.carothers.name/2009/01/17/gc-isenabled-true/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, maybe the 7th try is the charm. This will be at least my 7th blog like entity. Perhaps this time it will go better.  Other blogging attempts have been, “The Flickering Fluorescent”, DNS lapsed. <a href="http://gjc314159.livejournal.com/">LiveJournal</a>, which has been updated a grand total of 3 times… in 7 years. I’m sure there were other ones, I remember creating the themes and setting them up, don’t remember much else about them. <a href="http://twitter.com/gcarothers">Twitter</a> has been going better, but then it’s not really a blog.</p>
<p>My goal, I think within reason, is to post here at least once a week. Of course just at the moment this blog doesn’t seem to be off to an auspicious start.</p>
<pre>host gavin.carothers.name
;; connection timed out; no servers could be reached</pre>
<p>Ah well, have to start some where.</p>
<pre>echo '8.17.170.105	gavin.carothers.name' >> /etc/hosts</pre>
]]></content:encoded>
			<wfw:commentRss>http://gavin.carothers.name/2009/01/17/gc-isenabled-true/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

