<?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>AsynchronousBlog &#187; ~/stuff/recipes</title>
	<atom:link href="http://www.asynchronous.org/blog/archives/category/stuffrecipes/feed" rel="self" type="application/rss+xml" />
	<link>http://www.asynchronous.org/blog</link>
	<description>Random stuff for search engines to index.</description>
	<lastBuildDate>Sat, 28 Nov 2009 16:10:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>posting delay; homebrew recipes and the semantic web</title>
		<link>http://www.asynchronous.org/blog/archives/2005/09/03/posting-delay-homebrew-recipes-and-the-semantic-web</link>
		<comments>http://www.asynchronous.org/blog/archives/2005/09/03/posting-delay-homebrew-recipes-and-the-semantic-web#comments</comments>
		<pubDate>Sat, 03 Sep 2005 17:49:40 +0000</pubDate>
		<dc:creator>jsled</dc:creator>
				<category><![CDATA[~/stuff/homebrew]]></category>
		<category><![CDATA[~/stuff/recipes]]></category>
		<category><![CDATA[~/stuff/semweb]]></category>

		<guid isPermaLink="false">http://www.asynchronous.org/blog/?p=65</guid>
		<description><![CDATA[Sorry for the long delay in posting.  A few months ago, the girlfriend and I bought a sinkhole of time and materials generally referred to as a house.  This one was particularly large in that it needed some serious internal rennovation before being habitable.  Between that and a desire to focus this [...]]]></description>
			<content:encoded><![CDATA[<p><em>Sorry for the long delay in posting.  A few months ago, the girlfriend and I bought a sinkhole of time and materials generally referred to as a house.  This one was particularly large in that it needed some serious internal rennovation before being habitable.  Between that and a desire to focus this less on just talking and more on talking about production, I&#8217;ve not had much time or much to write about&#8230;</em></p>

<p>For the past couple of years, I&#8217;ve been pretty interested in the semantic web technologies, and in RDF.  I came to the space looking for rigor about how to use XML to model data.  What I found was really what I was looking for: both the recognition of <a href="http://www.mnot.net/blog/2004/05/12/on_infosets">XML&#8217;s true nature</a> as well as a better way to actually do the data-modeling I was seeking&#8230; or so I thought.</p>

<p>Like many others, I feel into the trap of &#8220;RDF for everything!&#8221;, neglecting to remember that it is the (web) Resource Description Format.  While many things are, or can be (and should be), Resources, the framwork is setup more for the wide-scale exchange of information about those resources, not as a general-purpose &#8220;small-scale&#8221; data-modeling framework.  However, many things can be resources&#8230;</p>

<p>One project I started just about a year ago, when I started homebrewing, was keeping my homebrewing journal in a file.  I knew that I wanted to keep notes in a good bit of structured detail, but I didn&#8217;t want the pain associated with authoring them in XML.  I decided to author them <a href="http://www.w3.org/2000/10/swap/">in RDF, in N3</a>, along a loose ontology that I would create and extend as I authored.</p>

<p>The main aspects to record in such a journal are the following:</p>

<ul>
<li>the recipe itself</li>
<li>grains, adjuncts, hop-schedule, and notes</li>
<li>instances of brewing the recipe</li>
<li>deviations from the recipe</li>
<li>notes about the brewing process (e.g., tempatures reached, times of boiling,  &amp;c.)</li>
<li>readings of the <a href="http://www.answers.com/specific%20gravity">specific gravity</a> of the wort at the beginning and end of the fermentation.</li>
</ul>

<p>As such, I ended up with notes that look like:</p>

<p>&lt;#maplePorter> a hb:Recipe
; rdf:label &#8220;Maple Porter&#8221;
; dc:created &#8220;2005-04-02-05:00&#8243;^^xsd:date
; foaf:maker &lt;#jsled>
; hb:ingredient
[ a hb:Grain; hb:amt [ rdf:value 4.75; hb:units hb:lb ]; rdf:label &#8220;pale extract&#8221; ]</p>

<h1>&#8230;</h1>

<p>,[ a hb:Adjunct; hb:amt [ rdf:value 2.5;  hb:units hb:lb ]
,[ rdf:value 43;   hb:units hb:oz ]; rdf:label &#8220;Vermont maple syrup; unblended @ 20 min remaining&#8221; ]
,[ a hb:Hop; hb:amt [ rdf:value 2.0; hb:units hb:oz ]; rdf:label &#8220;Goldings&#8221;; hb:hopTime [ rdf:value 60; hb:units hb:min ] ]</p>

<h1>&#8230;</h1>

<p>.
&lt;#aprMaplePorter> a hb:BrewInstance
; hb:recipe &lt;#maplePorter>
; dc:created &#8220;2005-04-18-05:00&#8243;^^xsd:date
; foaf:maker &lt;#jsled>
; hb:journal
[ a hb:OriginalGravityReading; dc:created "2005-04-18-05:00"^^xsd:date; rdf:value 1.042; hb:temp [ rdf:value 60; hb:units hb:F ]]
,[ dc:created "2005-04-18-05:00"^^xsd:date; rdf:label "Used Wyeast 1318 (London Ale Yeast III), cultured Feb 15 2005, incubated for 2 days" ]</p>

<h1>&#8230;</h1>

<p>.</p>

<p>For quite a while I&#8217;ve been hoping to publish the collection of data, autogenerated from the RDF into HTML.  I finally set down and have done it. http://asynchronous.org/homebrew/ contains both.</p>

<p>The pipeline is the &#8220;standard&#8221; one: cwm plus a bit of inference into XML, then XSLT into HTML.  http://asynchronous.org/homebrew/meta contains a bit of the detail.  It&#8217;d be nicer to use a RDF-specific path/templating/transformation language, but <code>xsltproc</code> is widely available and simple.</p>

<p>A major part of the process was cleaning up and making-consistent the journal data.  In doing this a couple of issues with the ad-hoc formating I&#8217;d naturally done in the RDF were made much more clear:</p>

<ol>
<li><p>The relation between a recipe and an ingredient should really be made quite regular through the use of a URI for the ingredient, rather than simple a value string.  While true in recipes generally, this is particularly true in beer recipes, which draw from a small, <a href="http://www.purl.org/net/ontology/beer.owl">fixed set of ingredients</a> and vary primarily in the n-ary relations of those ingredients to the recipe.</p></li>
<li><p>What are currently n3-file-local fragments should really be first-order resources at <code>http://asynchronous.org/homebrew/recipes/&lt;filename&gt;</code>.  One thing that RDF makes particularly painful is the seamless transition from a very informal organization into a concrete one.</p></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.asynchronous.org/blog/archives/2005/09/03/posting-delay-homebrew-recipes-and-the-semantic-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
