<?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>Techquila Tech</title>
	<atom:link href="http://techquila.com/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://techquila.com/tech</link>
	<description>Don&#039;t let the Semantic Web drive you to drink!</description>
	<lastBuildDate>Sun, 19 May 2013 12:48:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Installing Sphinx on Windows</title>
		<link>http://techquila.com/tech/2013/05/installing-sphinx-on-windows/</link>
		<comments>http://techquila.com/tech/2013/05/installing-sphinx-on-windows/#comments</comments>
		<pubDate>Sun, 19 May 2013 12:41:29 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[.NET Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://techquila.com/tech/?p=468</guid>
		<description><![CDATA[Sphinx is an open-source tool for creating documentation. Written originally for the documentation of Python projects it also supports C/C++ with plans in the pipeline for support of other languages. Right now, my interest in Sphinx is that it is &#8230; <a href="http://techquila.com/tech/2013/05/installing-sphinx-on-windows/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://sphinx-doc.org/">Sphinx</a> is an open-source tool for creating documentation. Written originally for the documentation of Python projects it also supports C/C++ with plans in the pipeline for support of other languages. Right now, my interest in Sphinx is that it is the tool used by <a href="https://readthedocs.org/">readthedocs.org</a> where I am planning to host the documentation for <a href="http://brightstardb.com/">BrightstarDB</a>.</p>
<p>BrightstarDB is a .NET application written in C# and I&#8217;m quite happy with the output of <a href="http://shfb.codeplex.com/">Sandcastle</a> for the API documentation. However the developer and user docs were all originally created using the (commercial) <a href="http://www.helpandmanual.com/">Help &amp; Manual</a> application &#8211; which is a great documentation tool in its own right but would require contributors to the project to purchase a license in order to update or extend the docs.</p>
<p>Getting a local version of Sphinx running is the first step in evaluating if this approach is going to be feasible and as I&#8217;m developing on Windows 8, getting it running under Windows is my priority. So my goal here is to document how to install all you need to run Sphinx on Windows &#8211; with the qualifier that I&#8217;m doing this on Windows 8. YMMV on other Windows OSes.</p>
<ol>
<li><strong>Install Python 2.7</strong>: At the time of writing Python 2.7.5 is the latest Python 2 release. The Python project has Windows installers available at <a href="http://www.python.org/download/">http://www.python.org/download/</a>. As my OS is 64-bit, I used the &#8220;Python 2.7.5 Windows X86-64 Installer&#8221;.</li>
<li><strong>Add the Python directory to your path</strong>: By default Python will install in C:\Python27 but will not add itself to your PATH environment variable. I find it useful to do that so I don&#8217;t have to keep typing the full path to the python.exe that you use to run Python scripts.</li>
<li><strong>Install setuptools</strong>: The current version is 0.6c11 and you can get it from <a href="https://pypi.python.org/pypi/setuptools">https://pypi.python.org/pypi/setuptools</a> Installation instructions for Windows are on that page and differ for 32-bit vs 64-bit OS. The basic procedure is to download <a href="http://peak.telecommunity.com/dist/ez_setup.py">easy_setup.py</a> and then run it. If you updated the PATH environment variable as suggested above, then this is as simple as opening a new command prompt, cd to the directory you downloaded easy_setup.py to and typing:
<pre>python ez_setup.py</pre>
<p>You will see output from the script as it downloads and installs setuptools into your Python directory.</li>
<li><strong>Add the Python scripts directory to your PATH</strong>: The core setuptools scripts get installed under {Python Directory}\Scripts and the Sphinx scripts will get installed in the same location so it is sensible to add this directory to your PATH environment variable. If you went for the default installation location you will add C:\Python27\Scripts to your PATH.</li>
<li><strong>Download the Sphinx egg</strong>: Eggs are Python packages that make it easier to distribute and install Python applications. The Sphinx egg can be found at <a href="https://pypi.python.org/pypi/Sphinx">https://pypi.python.org/pypi/Sphinx</a>. At the time of writing the version is 1.2b1.</li>
<li><strong>Install the Sphinx egg</strong>: Open a new command prompt (to get your updated PATH) and cd to the directory you downloaded the .egg file to. You can then use setuptools to install the egg like this:
<pre>easy_install Sphinx-1.2b1-py2.7.egg</pre>
<p>The package will install the Sphinx scripts and download and install a set of dependencies. The installation process produces a number of warning messages about not finding files but the installation runs through to completion OK.</li>
<li><strong>Try a Sphinx &#8220;Hello World&#8221;</strong>: The Sphinx project have <a href="http://sphinx-doc.org/tutorial.html">a more thorough tutorial.</a> But in a nutshell this is what to do (assuming you are still in the same command prompt window) &#8211; the following assumes you have your Python directory and Python Scripts directory included in your PATH environment variable.
<ol>
<li><strong>Initialise your project</strong>. The following command create and initialize a directory that will contain your documentation:
<pre>mkdir MyFirstDoc
cd MyFirstDoc
sphinx-quickstart</pre>
<p>There now follows a list of questions. Apart from the project name, author and release number, the questions have default answers which for this quick runthrough you can just accept by pressing enter.</li>
<li><strong>Edit index.rst</strong>. The initialization process creates a starter file (by default it will be called index.rst). You will want to keep the toctree directive, but you can add more content before or after it. The <a href="http://sphinx-doc.org/rest.html#rst-primer">reStructuredText Primer</a> on the Sphinx project site guides you through the basic constructs that are pretty simple to get the hang of.</li>
<li><strong>Make the docs</strong>. The initialization process for Sphinx has helpfully added a make.bat file to your documentation directory so the only command you need to produce your documentation in HTML is:
<pre>make html</pre>
</li>
<li><strong>View your work</strong>: You should now be able to view the glorious generated HTML by typing:
<pre>_build\html\index.html</pre>
</li>
</ol>
</li>
</ol>
<p>And that&#8217;s all there is to it &#8211; should take you about 10 or 15 minutes from start to end. Of course, now the hardest part, I have to start writing the docs&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2013/05/installing-sphinx-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVC4 List view template error: Column Attribute is an ambiguous reference</title>
		<link>http://techquila.com/tech/2012/11/mvc4-list-view-template-error-column-attribute-is-an-ambiguous-reference/</link>
		<comments>http://techquila.com/tech/2012/11/mvc4-list-view-template-error-column-attribute-is-an-ambiguous-reference/#comments</comments>
		<pubDate>Wed, 07 Nov 2012 10:59:54 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[.NET Development]]></category>

		<guid isPermaLink="false">http://techquila.com/tech/?p=460</guid>
		<description><![CDATA[I came across this problem when trying to create a strongly-typed MVC4 view using the List scaffolding template in Visual Studio 2010. When trying to add the view, an error is generated that reports: c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC &#8230; <a href="http://techquila.com/tech/2012/11/mvc4-list-view-template-error-column-attribute-is-an-ambiguous-reference/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I came across this problem when trying to create a strongly-typed MVC4 view using the List scaffolding template in Visual Studio 2010. When trying to add the view, an error is generated that reports:</p>
<p>c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates\AddView\CSHTML\List.tt(206,35): error CS0104: Compiling transformation: &#8216;ColumnAttribute&#8217; is an ambiguous reference between &#8216;System.ComponentModel.DataAnnotations.ColumnAttribute&#8217; and &#8216;System.Data.Linq.Mapping.ColumnAttribute&#8217;</p>
<p>The fix for this is to locate that .TT file (c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates\AddView\CSHTML\List.tt) and on line 206 change</p>
<p>var column = attribute as ColumnAttribute;</p>
<p>to</p>
<p>var column = attribute as System.Data.Linq.Mapping.ColumnAttribute;</p>
<p>Strangely, this error doesn&#8217;t occur in a VS2012 installation so it must have got fixed at some point but even after reinstalling MVC4 into VS2010 the error still came up.</p>
<p>Hopefully this post will help someone else find the fix !</p>
<p>Edit: This problem seems to also affect the Create.tt template (on line 122), the Delete.tt template (line 174), the Details template (line 179) and the Edit template (line 229) &#8211; the same fix works in all cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2012/11/mvc4-list-view-template-error-column-attribute-is-an-ambiguous-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cell Calendar</title>
		<link>http://techquila.com/tech/2011/05/cell-calendar/</link>
		<comments>http://techquila.com/tech/2011/05/cell-calendar/#comments</comments>
		<pubDate>Thu, 05 May 2011 09:57:31 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[time management]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=435</guid>
		<description><![CDATA[An interesting concept for time management on creative tasks. http://doriantaylor.com/cell-calendar]]></description>
				<content:encoded><![CDATA[<p>An interesting concept for time management on creative tasks.</p>
<p>http://doriantaylor.com/cell-calendar</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2011/05/cell-calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Measuring The Semantic Web &#8211; Measurement Units</title>
		<link>http://techquila.com/tech/2009/12/measuring-the-semantic-web-measurement-units/</link>
		<comments>http://techquila.com/tech/2009/12/measuring-the-semantic-web-measurement-units/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 23:05:50 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Measuring The Semantic Web]]></category>
		<category><![CDATA[htyime]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Topic Maps]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=416</guid>
		<description><![CDATA[In the last post I introduced the concept from HyTime of a finite coordinate space (FCS) consisting of a number of axes each of which is tied to a measurement domain where the measurement domain might be physical or virtual. &#8230; <a href="http://techquila.com/tech/2009/12/measuring-the-semantic-web-measurement-units/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the last post I introduced the concept from HyTime of a finite coordinate space (FCS) consisting of a number of axes each of which is tied to a measurement domain where the measurement domain might be physical or virtual. In this post we will take a look at Clause 9.2 of the standard which talks about how to define the units of measurement for a measurement domain.</p>
<p>Before we go there, lets just pause a moment to think about the problem here. Take length as an example. For most folks going about their daily business, the metre is a good unit of length to use for most things &#8211; I&#8217;m 1.9m tall, my room is 3.5m by 2.5m. However, for some things we tend to prefer to use smaller length units such as the corner-to-corner size of my monitor (22&#8243;), the depth of my desk (40cm&#8230;I&#8217;m guessing that one), the diameter of the jack that goes into my iPod (3.5mm). The folks that make the chips that power my PC work in nanometres, cellular scientists probably dream in picometers. Physicists are the worst &#8211; depending on their speciality a picometer might be way too big or a kilometre way too small.  If we want a measurement system that works we need some way for all of these folks to express measurements in terms of the units that make the most sense to them but at the same time be able to freely map between them.</p>
<p>The HyTime answer to this is to provide a way to specify a measurement domain in terms of some basic unit of measurement and then to define as many other units of measurement for that domain in terms of their ratio to the basic measurement unit. For physical measurements of space and time, HyTime provides definitions measurement domains based on the Systeme Internationale (SI) units of SI second and SI meter. The</p>
<p>Its probably easier to understand this if we take one of these definitions as an example (the following are all snippets from the text of clause 9.2)</p>
<p>Firstly our measurement domain is defined in terms of a standard measurement unit (SMU). The standard measurement unit has an identifier, and this being HyTime and based on SGML, the identifier is a formal public identifier (FPI):</p>
<pre>&lt;!notation
   SImeter        -- Systeme International meter --
                  -- Reference unit of real length --

   PUBLIC "ISO/IEC 10744:1997//NOTATION
           Systeme International meter//EN"
&gt;</pre>
<p>If you come from the world of XML, just think of &#8220;ISO/IEC 10744:1997//NOTATION Systeme International meter//EN&#8221; as a funny-shaped URI and you&#8217;ll be doing fine. You can also think of this &lt;!notation&gt; tag as declaring a mapping from the short string &#8220;SImeter&#8221; to the longer identifier string. So this is essentially an SGML-flavoured namespace declaration.</p>
<p>Now we have a standard measurement unit defined and assigned an identifier we move on to use that identifier in a resource that describes our measurement domain and all of the different measurement units that can be used in it. In the HyTime specification each of these units is called a granule and a measurement domain can contain any number of granules. Every granule is defined as a multiple of some other granule in the same measurement domain (with at least one granule based on the SMU). The multiplier is expressed as a ratio of two numbers. These granule declarations are made in an SGML resource like this (I&#8217;ve left out many of the granules defined in the standard for brevity):</p>
<pre><span style="font-family: Courier;">&lt;measure smu=SImeter&gt;
  &lt;granule gn=um&gt;                    1   1000 mm
  &lt;granule gn=mm&gt;                    1     10 cm
  &lt;granule gn=cm&gt;                    1     10 dm
  &lt;granule gn=dm&gt;                    1     10 meter
  &lt;granule gn=meter&gt;                 1      1 SImeter
  &lt;granule gn=dam&gt;                  10      1 meter
  &lt;granule gn=hm&gt;                   10      1 dam
  &lt;granule gn=km&gt;                   10      1 hm
  &lt;granule gn=pica&gt;                  1      6 inch
  &lt;granule gn=barleycorn&gt;            1      3 inch
  &lt;granule gn=inch&gt;                254    100 cm
&lt;/measure&gt;</span></pre>
<p>This being SGML, end-tags are optional, so if you are an XML-head you will have to imagine a &lt;/granule&gt; inserted in the relevant places. For each granule, the granule&#8217;s magnitude is specified with two numbers and a reference to another granule. The two numbers define the ratio for one granule of the type being defined to the granule referenced by the granule definition. So, a mm is 1/10th of a cm, which is in turn 1/10 of a dm, which is 1/10 of a meter, which is exactly 1 SImeter. Note that this principle works for more complex ratio&#8217;s such as 1 inch being 254/100 cm (i.e. 1&#8243;=2.54cm). In this way, the standard measurement unit of an SI meter (with its FPI) is used as a base for defining all units of length measurement in a way which allows a conversion between any two particular units of measurement.</p>
<p>To my mind, this is a really cool facility because it means that all units are defined by the mathematical relationship between them making it possible for a machine to simply compare measurements given in different units (indeed, it provides a means for a machine to determine *if* a pair of measurements can be converted).</p>
<p>When I published the first post in this series, Bob DuCharme gave me a pointer to <a href="http://qudt.org/">an ontology for Quantities, Units, Dimensions and Types</a>. This has a similar approach to defining units. I think that I prefer the HyTime approach of defining conversions as a ratio of integers as it enables irrational numbers to be used in conversions (cf the definition of a barleycorn above as 1/3 of 1 inch) . What the QUDT ontology also does, which is extremely cool, is allow the definition of what HyTime calls &#8220;measurement domains&#8221; as a combination of other measurement domains. For example, a measurement domain for speed or acceleration could be defined in terms of the measurement domains for length and time.</p>
<p>Another interesting piece of work is <a href="http://forge.morfeo-project.org/wiki_en/index.php/Units_of_measurement_ontology">this part of the Morfeo project</a>. As with the QUDT ontology, it allows derivation of measurement domains. The wiki page I have linked to also discusses the problems of attaching measurement units to RDF property values, describing 4 different patterns with their pros and cons. For a topic map practitioner, these are instructive if we consider that an (unscoped) occurrence with a data resource is the same functionally equivalent to an RDF property with a literal value.</p>
<p>In the next post, I&#8217;ll try to start pulling together some thoughts on a Topic Maps ontology for defining measurement units and a pattern for expressing measurements.</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/12/measuring-the-semantic-web-measurement-units/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Measuring Out The Semantic Web &#8211; Definitions</title>
		<link>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web-definitions/</link>
		<comments>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web-definitions/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 16:05:31 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Measuring The Semantic Web]]></category>
		<category><![CDATA[hytime]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Topic Maps]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=414</guid>
		<description><![CDATA[In this post I&#8217;m going to look at Clause 9.1 of the HyTime standard &#8211; hit the link to bring it up in a new window if you want to follow along. First off, the term &#8220;Scheduling&#8221; might strike you &#8230; <a href="http://techquila.com/tech/2009/12/measuring-out-the-semantic-web-definitions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In this post I&#8217;m going to look at <a title="ISO/IEC 10744 - Clause 9.1 Scheduling Concepts and Definitions" href="http://www1.y12.doe.gov/capabilities/sgml/wg8/document/n1920/html/clause-9.1.html" target="_blank">Clause 9.1</a> of the HyTime standard &#8211; hit the link to bring it up in a new window if you want to follow along.</p>
<p><span id="more-414"></span></p>
<p>First off, the term &#8220;Scheduling&#8221; might strike you as an odd term &#8211; it certainly fooled me. In fact all of Clause 9, with its references to &#8220;events&#8221; and &#8220;scheduling&#8221; might make you think you have accidently stumbled into a meeting of the iCal working group. However the first sentence of Clause 9.1 reassures that &#8220;scheduling&#8221; an object is no more than &#8220;giving them a position and size&#8221;. HyTime&#8217;s language is time-oriented, but the standard itself &#8211; as the rest of this clause makes clear &#8211; is neutral about how many and what types of axes we use to give an object position and size. That said, we are going to have to get used to the fact that in the rest of our exploration of this standard &#8220;scheduling&#8221; means defining position and size &#8211; i.e. measuring; and &#8220;event&#8221; means the thing being measured.</p>
<p>What this clause of HyTime is aiming to do is to provide us with a mechanism for interchange of the measurement of objects (real or virtual) in a way that it is possible to ground an application with the minimal amount of predefined &#8220;magic&#8221; needing to be baked into[1] an application. To do that we need some sort of model, and in Clause 9.1 the model is described in high-level terms.</p>
<p>The scheduling of events (positioning of objects) in HyTime is done by first defining a set of bounded axes that define the space within which those events exist &#8211; this is called a &#8220;finite coordinate space&#8221; (FCS). Each FCS is made up of a finite number of such axes, and each axis in an FCS has a finite length and is assigned to some measurement domain that defines the units of measurement along that axis. The room I am sitting in now is a FCS, with three axes whose sizes are bounded by the length, breadth and height of the room and where the measurement domain can be most conveniently (for the purposes of interchange) be expressed in metres. A piece of music can be seen as a FCS with axes denoting pitch, volume and time. Pitch could be expressed in hertz, and volume in decibels. Time in music is somewhat different however &#8211; the time in a piece of music cannot be expressed in seconds because all the timings are relative to the tempo at which the piece is performed. For this purpose HyTime allows some axes to use virtual measurement units &#8211; that is measurement units that have no absolute physical basis. The standard also allows for the fact that an axis that uses a virtual measurement unit might at some point be projected on to real, physical measurement domain (when the musician picks up their instrument and starts to play at a given tempo). A note (Note 257 if you are looking at the text of the standard) also helpfully points out that the measurement domain for an axis can even be an ordered set of things (the standard calls them topics, but all Topic Mappers know that a topic is anything&#8230;right?). So I can say that the books on my bookshelf form a measurement domain, where 1 is the first book from the left, 2 is the second one and so on.</p>
<p>For our purposes of expressing measurements for Linked Data, I suspect that this last interpretation for axes is probably not of much use, but the idea of allowing for axes that have a physical measurement and axes that have a relative measurement is of immense use as is the concept of mapping relative measurements on to physical axes at run-time.</p>
<p>So to recap what we have learnt so far:</p>
<ol>
<li>To start measuring things we first need to define the space within which all of those measurements will lie.</li>
<li>The space we define can have as many dimensions to it as we want. Each dimension has its own axis.</li>
<li>Every axis must be bounded. That is it must have a start point and an end point.</li>
<li>Every axis must have an associated measurement domain that defines the units used to measure along that axis.</li>
<li>A measurement domain may be some real, physical domain such as length, frequency, volume or temperature. A measurement domain may be some virtual domain where positioning is all relative.</li>
</ol>
<p>In the next post I&#8217;ll be looking at what the HyTime standard and other unit ontology efforts have to say about units of measurement.</p>
<p><em>[1] I suspect that the editors of the standard would use the more appropriate term &#8220;disclosed&#8221;. All interchange syntaxes that deal with semantics need to be grounded in some set of &#8220;things that need to be known by the application in advance of processing this stuff&#8221;. How a disclosure is made to an application is where standards get into the realms of hand-waving. Generally this means that a programmer (yes, you at the back) needs to hard-code stuff or write some clever (but non-standard) configuration voodoo.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web-definitions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Measuring Out The Semantic Web</title>
		<link>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web/</link>
		<comments>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 16:09:27 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Measuring The Semantic Web]]></category>
		<category><![CDATA[hytime]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Topic Maps]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=412</guid>
		<description><![CDATA[Its about time the Semantic Web got a dose of HyTime's pragmatic approach to defining measured points and extents in n-dimensional space. This is the first in a series of posts to explore that hypothesis and maybe come up with some proposals. <a href="http://techquila.com/tech/2009/12/measuring-out-the-semantic-web/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>In his closing keynote at this years TMRA conference (you weren&#8217;t there? you should have been!), Steve Newcomb made reference to the wonders of ISO/IEC 10744 or HyTime to its friends.</p>
<p>HyTime is a monster standard &#8211; it is complex and so difficult to implement in its entirety that I believe only one person has ever tried. That said, the standard contains so much that is useful and generally required for a functioning Web, that many of its pieces got cannibalized, stripped down and turned into hacker-friendly W3C &#8220;standards&#8221; &#8211; XLink. Just as XML owes its very existence to SGML, so XLink and SMIL both need to look back to HyTime as an ancestor (albeit one that never gets invited to the family parties). Anyway, Steve talked about how there is still much left in HyTime that could be useful and in particular picked out Clause 9 &#8211; Scheduling as one such piece. IMHO he is right on the money.</p>
<p><strong>The Problem Statement</strong></p>
<p>One of the biggest problems on the semantic web or linked data web is that we have no way to communicate measurements or positions using a grounded algorithm. There is no way that a fully conformant Topic Maps processor, RDF processor or OWL reasoner can tell that a given property is actually a point on some axis. And there is no way that these processors could convert from one axis type to another (say feet to metres). To do all this with current technology you need to bake in to your application some ontology-specific knowledge &#8211; something that tells you &#8220;Values of property X are always expressed in milimeters, and values of property Y are always expressed in seconds since midnight on 1st January 1970&#8243;.</p>
<p>It is staggering to realise that we can&#8217;t do this yet on the Semantic Web when you think about it. Its even more staggering to see bold statements being made for the &#8220;Web of Linked Data&#8221; without addressing the basic problem of &#8220;How do I know what units this data is expressed in&#8221;. I believe that this is where carcass of HyTime can be picked over once more <img src='http://techquila.com/tech/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>What I&#8217;m going to attempt</strong></p>
<p>I have decided to go back to the HyTime standard and see what can be taken away from it for the benefit of those currently struggling with merging, comparing and meaningfully transforming Linked Data. HyTime is a massive spec, and as the <a title="A Reader's Guide to the HyTime Standard" href="http://www.hytime.org/papers/htguide.html">Readers Guide To HyTime</a> recommends, I&#8217;m not going to even attempt to read all 450 pages but will instead focus just on <a title="ISO/IEC 10744 Draft" href="http://www1.y12.doe.gov/capabilities/sgml/wg8/document/n1920/html/clause-9.html">Clause 9</a>. This part of the HyTime specification deals with the issue of describing the positioning and extent of an object in N-dimensional space and provides a mechanism for defining the units used for measuring along each axis.</p>
<p>My hope is that this facility can be used not only for defining the size and position of objects but also as a general purpose facility for expressing measurements of all kinds, and that is going to be my closed set of problems to address:</p>
<ol>
<li>Specifying a measurement with a value and units in a way that allows an application to automatically compare and convert measurements that use different scales or units.</li>
<li>Specifying a location and/or extent of an object in N dimensions where each dimension has its own associated measurement domain.</li>
</ol>
<p>Because this will probably take some time, and because I know you are too busy to read a three-screen-long thesis, and because I would  actually value feedback as I go along, I&#8217;m going to break this exploration up into a number of separate posts. I&#8217;ll create a Category to group all the posts together as I go. Please feel free to hit up the links above and dive in there and stick around for the next post where I&#8217;ll start to actually read this stuff.</p>
<p><strong>What Do You Think ?</strong></p>
<p>I would be interested in what others think about this. Do you know of some other existing ontology for measurements ? Have you tried to do something similar yourself (and if so what were your experiences) ? What chapter did you get to in the HyTime spec ? All comments, suggestions and peanuts from the gallery are welcome in the comments!</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/12/measuring-out-the-semantic-web/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Announcing Metatribble &#8211; semantic annotations for web pages</title>
		<link>http://techquila.com/tech/2009/04/announcing-metatribble-semantic-annotations-for-web-pages/</link>
		<comments>http://techquila.com/tech/2009/04/announcing-metatribble-semantic-annotations-for-web-pages/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 11:43:51 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[metatribble]]></category>
		<category><![CDATA[RDF]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=410</guid>
		<description><![CDATA[Its a pleasure to announce the first release of Metatribble, an attempt to implement some of the concepts of semantic annotation that I talked about in a previous post. Metatribble is currently packaged as a Ubiquity command and right now &#8230; <a href="http://techquila.com/tech/2009/04/announcing-metatribble-semantic-annotations-for-web-pages/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Its a pleasure to announce the first release of Metatribble, an attempt to implement some of the concepts of semantic annotation that I talked about in a previous post. Metatribble is currently packaged as a Ubiquity command and right now doesn&#8217;t do an awful lot except for mark up interesting entities with RDFa, but even just that is kinda cool <img src='http://techquila.com/tech/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>To this stage the project has been a collaboration between myself and <a href="http://surguy.net">Inigo Surguy</a>, but making use of the tremendous work done by <a href="http://jenitennison.com">Jeni Tennison</a> on the <a href="http://code.google.com/p/rdfquery">rdfquery</a> plugin for jQuery &#8211; we are truely standing on the shoulders of giants here. We would welcome any comments/suggestions/offers of help.</p>
<p>Links to the project and its source code and the installer for Ubiquity can all be found on the <a href="http://kal.github.com/metatribble">Metatribble project homepage</a>.</p>
<p>BTW We are designating this release a zeta because the concept of &#8220;beta&#8221; has been somewhat devalued by beta-ware such as gmail, we feel we need to wrap around the alphabet.</p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/04/announcing-metatribble-semantic-annotations-for-web-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>rdfQuery + OpenCalais + Cloud Storage = Personal Knowledge Base ?</title>
		<link>http://techquila.com/tech/2009/03/rdfquery-opencalais-cloud-storage-personal-knowledge-base/</link>
		<comments>http://techquila.com/tech/2009/03/rdfquery-opencalais-cloud-storage-personal-knowledge-base/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 13:53:48 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[OpenCalais]]></category>
		<category><![CDATA[RDF]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=408</guid>
		<description><![CDATA[Last night&#8217;s Oxford SWiG meeting was interesting and sociable as usual. There were three great presentations &#8211; Jeni Tennison on rdfQuery, a jQuery-like Javascript library for parsing, querying and generating RDFa markup; Iain Emsley presented a WP plug-in that creates &#8230; <a href="http://techquila.com/tech/2009/03/rdfquery-opencalais-cloud-storage-personal-knowledge-base/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Last night&#8217;s <a href="http://swig.networkedplanet.com/">Oxford SWiG</a> meeting was interesting and sociable as usual. There were three great presentations &#8211; Jeni Tennison on <a href="http://code.google.com/p/rdfquery/">rdfQuery</a>, a jQuery-like Javascript library for parsing, querying and generating <a href="http://www.w3.org/TR/rdfa-syntax/">RDFa</a> markup; Iain Emsley presented a WP plug-in that creates RDF graphs for blog posts showing a nice use of multiple ontologies; Laurian Gridinoc talked about the plans for <a href="http://powermagpie.open.ac.uk/">PowerMagpie</a> &#8211; with lots of ideas for navigation/presentation of large taxonomies and complex ontologies.</p>
<p>As usual though the real action was in the pub. One of the things we got to discussing was whether rdfQuery could be used to create stand-off markup on someone else&#8217;s content. <a href="http://surguy.net/">Inigo Surguy</a> pointed out that using tools such as <a href="http://www.greasespot.net/">Greasemonkey</a> it should be pretty easy to get rdfQuery to scrape a page for the RDFa it contains and to add custom scripts to do something cool with that data. The problem comes when trying to persist any new RDF statements you might create. RDFa is a syntax for embedding RDF within HTML &#8211; so if you are in control of the page that you are adding the markup to, it is trivial to persist that markup simply by saving the modified file. If you are not in control of the page then you have some problems. The easy case is when the publisher of the page has already identified things that you might want to talk about and wrapped them in some RDFa. In this case you can simply add some more statements about those entities. What is harder is if the publisher of the page hasn&#8217;t marked up anything with RDFa. What is needed is a &#8220;bootstrap&#8221; mechanism to locate entities that you might want to talk about.</p>
<p>That is where <a href="http://www.opencalais.com/">OpenCalais</a> comes in. The OpenCalais service takes content and locates entities within it, returning the content with markup added that identifies the entities within. Using some custom code interfacing to rdfQuery, it should be possible to turn the results from OpenCalais into RDFa, then you can do all the funky stuff you want with the RDF and serialize it to some persistent store (either on another web service such as the <a href="http://www.talis.com/platform/">Talis platform</a> or maybe to a local persistence mechanism such as Gears). Now, when you return to the page, your script again goes to OpenCalais to get the entities identified within and again turns this into RDF, but now you can smoosh in the RDF from your persistent store to retrieve all that cool markup you added.</p>
<p>What&#8217;s even better is that because OpenCalais has unique identifiers for the entities it recognizes, if you then visit another page that contains a reference to the same entity you should be able to pull in your extra markup automatically. I&#8217;m pretty sure that with this approach it should be possible to build up a personal knowledge store that can be merged into web pages as you view them, combine with some clever javascript to present that information and to allow you to extend the set of statements in the store and you have something really rather cool.</p>
<p>Just need to code it now <img src='http://techquila.com/tech/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/03/rdfquery-opencalais-cloud-storage-personal-knowledge-base/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New NPCL Editor Released</title>
		<link>http://techquila.com/tech/2009/03/new-npcl-editor-released/</link>
		<comments>http://techquila.com/tech/2009/03/new-npcl-editor-released/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 09:13:18 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[Topic Maps]]></category>
		<category><![CDATA[networkedplanet]]></category>
		<category><![CDATA[npcl]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=395</guid>
		<description><![CDATA[If any of you are using NPCL to write your topic map ontologies, you should know that we have just released a new version of the NPCL Schema Editor. Includes MSBuild support, compiling multiple NPCL files into a single file, &#8230; <a href="http://techquila.com/tech/2009/03/new-npcl-editor-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>If any of you are using NPCL to write your topic map ontologies, you should know that we have just released a new version of the NPCL Schema Editor. Includes MSBuild support, compiling multiple NPCL files into a single file, auto-generated documentation and much much more. Fun for all the family and competitively priced at $0. For more info see <a href="http://www.networkedplanet.com/ontopic/2009/03/npcl_schema_editor_for_visual_1.html">http://www.networkedplanet.com/ontopic/2009/03/npcl_schema_editor_for_visual_1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/03/new-npcl-editor-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chaining MSIs with WiX 3.0</title>
		<link>http://techquila.com/tech/2009/03/chaining-msis-with-wix-30/</link>
		<comments>http://techquila.com/tech/2009/03/chaining-msis-with-wix-30/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 11:15:34 +0000</pubDate>
		<dc:creator>kal</dc:creator>
				<category><![CDATA[.NET Development]]></category>
		<category><![CDATA[Installers]]></category>
		<category><![CDATA[WiX]]></category>

		<guid isPermaLink="false">http://www.techquila.com/blog/?p=393</guid>
		<description><![CDATA[In some deployment scenarios it is not possible to bundle everything into a single installer. This may be because you need to install some third-party software, or because your build process forces you to split a single product across multiple &#8230; <a href="http://techquila.com/tech/2009/03/chaining-msis-with-wix-30/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In some deployment scenarios it is not possible to bundle everything into a single installer. This may be because you need to install some third-party software, or because your build process forces you to split a single product across multiple MSIs.</p>
<p>Although there is not much in the WiX documentation about this, it is possible to chain multiple MSI installers in a setup.exe wrapper so that the installers execute one after the other. The key to this is the setupbld.exe command-line tool that comes with the WiX 3.0 installation. Jon Torresdal has written a useful article on <a href="http://blog.torresdal.net/Trackback.aspx?guid=001283d1-5c8e-4b16-b369-7008675e2e72">using setupbld.exe to force elevated privileges for an installer under Vista</a>, and I recommend starting there for an explanation of how to prepare your build to generate setup.exe files. In addition to doing this, setupbld.exe can combine multiple MSI files into a single setup.exe installer. To do this use a command line like:</p>
<p><code>setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe</code></p>
]]></content:encoded>
			<wfw:commentRss>http://techquila.com/tech/2009/03/chaining-msis-with-wix-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
