<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Semantosoph - Home</title>
  <id>tag:semantosoph.net,2010:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.8.0">Mephisto Drax</generator>
  <link href="http://semantosoph.net/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://semantosoph.net/" rel="alternate" type="text/html"/>
  <updated>2010-10-30T10:15:54Z</updated>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-04-14:606</id>
    <published>2010-04-14T16:25:00Z</published>
    <updated>2010-10-30T10:15:54Z</updated>
    <category term="Semantics"/>
    <category term="linked data"/>
    <category term="maiana"/>
    <category term="subject centric computing"/>
    <category term="topic maps"/>
    <category term="yacca"/>
    <link href="http://semantosoph.net/2010/4/14/everywhere-you-go-always-take-your-topic-with-you" rel="alternate" type="text/html"/>
    <title>Everywhere you go, always take your topic with you</title>
<content type="html">
            &lt;p&gt;Ever since I saw an embedded &lt;a href=&quot;http://www.youtube.com/watch?v=uIb6I8gtgtw&quot;&gt;YouTube-Video&lt;/a&gt;, I&#8217;m fascinated with the idea of employing my browser for bringing data from different sources together automatically. Of course, the &lt;a href=&quot;http://esw.w3.org/SweoIG/TaskForces/CommunityProjects/LinkingOpenData&quot;&gt;Linking Open Data&lt;/a&gt; initiative has made great success in structuring and combining large amounts of data. But that blending always happens on the server side and the user has no influence on what kind or what amount of linked data I may see in my browser.&lt;/p&gt;


	&lt;p&gt;To achieve a more user friendly experience, the benefits from the field of publicly available data storing should be combined with the idea of the embeddable video. That is, bringing small parts of public open data to the user in an easily embeddable form. And to bring this one step further, an user should not only be able to embed public data, but to create embeddable widgets of his own structured data, too.&lt;/p&gt;


	&lt;p&gt;Having said this, I&#8217;m fairly proud of the widget engine that &lt;a href=&quot;http://maiana.topicmapslab.de/u/dex/tm/maianadevteam&quot;&gt;we&lt;/a&gt; implemented into &lt;a href=&quot;http://maiana.topicmapslab.de&quot;&gt;Maiana&lt;/a&gt; recently. In a first step, every topic of any publicly available topic map that was uploaded to Maiana offers a ready-made &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt;-Code that allows easy embedding into websites and blogs. The code itself is very lightweight and contains only one Javascript call. This call retrieves all necessary data by sending a pre-defined &lt;span class=&quot;caps&quot;&gt;TMQL&lt;/span&gt; query to Maiana. The resulting box looks as if you had cut it right out of the Maiana website.&lt;/p&gt;


&lt;div class=&quot;maiana-widget&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;maiana-widget&quot;&gt;
&lt;div&gt;&lt;/div&gt;
&lt;span class=&quot;caps&quot;&gt;RETURN&lt;/span&gt;

&lt;/div&gt;

	&lt;p&gt;But this is only the first step. To demonstrate the possibilities of this widget engine, we implemented &lt;a href=&quot;http://yacca.me&quot;&gt;Yacca&lt;/a&gt;. Yacca is a mashup that combines data of all the teams (and their players) that will appear at the &lt;span class=&quot;caps&quot;&gt;FIFA&lt;/span&gt; soccer world championship in South Africa with data from the Twitter search &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; and offers small widgets, containig these two snippets. Of course, the soccer data is stored in a &lt;a href=&quot;http://maiana.topicmapslab.de/u/semantosoph/tm/yacca&quot;&gt;Maiana topic map&lt;/a&gt;. In this way, every soccer fan is able to show its support for a favourite player with a widget like the following one. And to get this even more playful, all the  Javascript calls are counted to create a definitive list of fame for the world cup players.&lt;/p&gt;


&lt;div&gt;&lt;/div&gt;

	&lt;p&gt;Now, think of all the possibilities that spark up with a widget engine like this. You can upload whatever topic map you like and have your topics shared all over the world.  We, the Maiana developer team, are really looking forward to see your ideas and applications for this.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-03-19:618</id>
    <published>2010-03-19T15:03:00Z</published>
    <updated>2010-03-19T15:06:16Z</updated>
    <category term="Semantics"/>
    <category term="search engine"/>
    <category term="subject centric computing"/>
    <category term="topic maps"/>
    <link href="http://semantosoph.net/2010/3/19/dude-where-s-my-context" rel="alternate" type="text/html"/>
    <title>Dude, where's my context?</title>
<content type="html">
            &lt;p&gt;&lt;a href=&quot;http://www.topicmapslab.de/people/Patrick_Durusau&quot;&gt;Patrick Durusau&lt;/a&gt; recently brought the idea of &lt;a href=&quot;http://tm.durusau.net/?p=44&quot;&gt;using context information for a better identification of subjects&lt;/a&gt; (subjet in its topic mappish meaning) in textual search to my mind. The background is that (verbal) context influences the way we understand expressions. Let&#8217;s have an example here: The word &lt;em&gt;bank&lt;/em&gt; has many different meanings. It could be the monetary institution, a riverbank or just seating furniture. When used out of context (i.e. the original document), you can not determine which meaning is the correct one. But with the knowledge of other expressions from this document, you can. E.g., when the words &lt;em&gt;money&lt;/em&gt; and &lt;em&gt;fraud&lt;/em&gt; appear in the document, bank must have the meaning of monetary institution.&lt;/p&gt;


	&lt;p&gt;This additional knowledge can be used to identify subjects. Not in the meaning of an &lt;span class=&quot;caps&quot;&gt;URI&lt;/span&gt;, but in the meaning of co-occurrences and their linguistic sense that can be interpreted as an indicator of semantic proximity.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;1. The Ontology&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;The schema of this topic map is plain and simple. There is one topic-type, called &lt;em&gt;word&lt;/em&gt;. All of its instances are connected by associations of type &lt;em&gt;co-occurrence_of&lt;/em&gt;. Additionally, each association is reified by a topic of type &lt;em&gt;count&lt;/em&gt; that counts how often these two words have been found in co-occurrence.&lt;/p&gt;


	&lt;p&gt;&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;2. Indexing&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Indexing the co-occurrences of texts is no rocket science. It is usually done by parsing the text sentence by sentence, removing all &lt;a href=&quot;http://en.wikipedia.org/wiki/Stop_words&quot;&gt;stop words&lt;/a&gt;, and counting the co-occurrence of each pair of the remaining words in a large &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; database table.&lt;/p&gt;


	&lt;p&gt;With the afore-mentioned topic map, the procedure would be similar, except for the last step. Instead of updating a database table, topics are created for any new pair of words. Afterwards, an association between these two topics is spawned, along with its reifying topic. Any pair of words that is found again, triggers nothing more than an incrementation of the reifiers &lt;em&gt;count&lt;/em&gt;-occurrence.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;3. Searching&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;This is the part, where the user comes in. To give a good example, our hero may search his or her document collection for the term &lt;em&gt;aspirin&lt;/em&gt; (perhaps he had a hard night). Actually, he wants to find all documents that may help him getting over his headaches, not only the ones that deal with aspirin directly. Luckily for him, his search enginge does not only look in its fulltext index, but into the topic map of context, too. This works as follows:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;For every searched word (here: &lt;em&gt;aspirin&lt;/em&gt;)
	&lt;ul&gt;
	&lt;li&gt;Find the nearest neighbors (i.e. the &lt;em&gt;n&lt;/em&gt; terms with the highest count of appeared co-occurences)&lt;/li&gt;
		&lt;li&gt;Perform a fulltext search for each of the newfound words&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;Rank the documents
	&lt;ul&gt;
	&lt;li&gt;Top &#8211; documents that contain the original term and some of the neighbors&lt;/li&gt;
		&lt;li&gt;Middle &#8211; documents that contain only the original term&lt;/li&gt;
		&lt;li&gt;Bottom &#8211; documents that contain only neighbors&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;In this way, the user will not only find the documents that contain the word &lt;em&gt;aspirin&lt;/em&gt;, furthermore he will find documents that deal with the subject of &lt;em&gt;aspirin&lt;/em&gt; without naming it directly.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;4. Conclusions&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;You may have noticed that this last step is the opposite thing of word sense disambiguation. The searched terms are not narrowed to increase the precision, instead they are broadened to increase the &lt;a href=&quot;http://en.wikipedia.org/wiki/Precision_and_recall&quot;&gt;recall&lt;/a&gt;. However, this change in the direction of thinking brings up an easy and rather cheap possibility to advance from keyword search to subject centric search.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-02-20:598</id>
    <published>2010-02-20T15:54:00Z</published>
    <updated>2010-03-18T21:13:34Z</updated>
    <category term="Code"/>
    <category term="github"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2010/2/20/display-google-calendars-on-your-mephisto-blog" rel="alternate" type="text/html"/>
    <title>Display Google Calendars on your Mephisto Blog</title>
<content type="html">
            &lt;p&gt;This plugin provides a liquid filter for the &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;mephisto blog engine&lt;/a&gt; for inclusion of &lt;a href=&quot;https://www.google.com/calendar&quot;&gt;calendars&lt;/a&gt; hosted by Google.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Installation takes three simple steps.&lt;/p&gt;


	&lt;ol&gt;
	&lt;li&gt;Run &#8216;gem install runt&#8217;&lt;/li&gt;
		&lt;li&gt;&lt;a href=&quot;http://github.com/semantosoph/mephisto_google_calendar_plugin&quot;&gt;Download the Plugin from Github&lt;/a&gt; and put it into your vendor/plugins folder.&lt;/li&gt;
		&lt;li&gt;Restart your server.&lt;/li&gt;
	&lt;/ol&gt;


	&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;This plugin offers you a liquid filter. You may call this filter from every liquid template. Provide the liquid filter call with the private url of your calendars ical file. The number at the end specifies the number of items you may get. Example:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;{{ 'https://www.google.com/calendar/ical/your.user.name/private-xxxxx/basic.ics' | gcal_shortlist, 7 }}&lt;/code&gt;&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-02-15:594</id>
    <published>2010-02-15T12:43:00Z</published>
    <updated>2010-02-15T12:43:38Z</updated>
    <category term="augmented reality"/>
    <category term="bing"/>
    <category term="search engine"/>
    <link href="http://semantosoph.net/2010/2/15/augmented-bing-maps" rel="alternate" type="text/html"/>
    <title>Augmented Bing Maps</title>
<content type="html">
            &lt;p&gt;The video of Microsoft&#8217;s Bing Maps augmented reality demo at the &lt;span class=&quot;caps&quot;&gt;TED&lt;/span&gt; conference last week shows how they integrate Flickr imagery, indoor panoramas, Worldwide Telescope and even live videos to allow a really impressive time travel for certain places.&lt;/p&gt;


&lt;div&gt;
 &lt;/div&gt;

	&lt;p&gt;&#8220;We see this space, three-dimensional environment as being a canvas on which all sorts of applications can play out,&#8221; said Bing Maps&#8217; Blaise Aguera y Arcas.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2010-01-28:585</id>
    <published>2010-01-28T20:18:00Z</published>
    <updated>2010-02-01T09:52:22Z</updated>
    <category term="Code"/>
    <category term="github"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2010/1/28/a-userlogin-plugin-for-mephisto-8-2" rel="alternate" type="text/html"/>
    <title>A userlogin plugin for mephisto 0.8.2</title>
<content type="html">
            &lt;p&gt;&lt;a href=&quot;http://github.com/semantosoph/mephisto_userlogin_plugin&quot;&gt;This little plugin&lt;/a&gt; provides you with a protected area for your users on your &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;mephisto blog&lt;/a&gt;. Its built to use engines 
compatible mephisto available in the mephisto version 8.2.&lt;/p&gt;


	&lt;p&gt;To install this plugin, run:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;script/generate plugin_migration
rake db:migrate RAILS_ENV=production&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This will make some changes to your production database and will expose a new Userlogin tab to your Mephisto administration interface. From there you can create new userlogins. When creating new userlogins provide a username and a password (Attention! This is designed for ease of use and easy remebering. The passwords are &lt;span class=&quot;caps&quot;&gt;NOT ENCRYPTED&lt;/span&gt;! Don&#8217;t use this for really important stuff) along with some sites you like to provide inside of the protected area.&lt;/p&gt;


	&lt;p&gt;You need to create a liquid template for every site you list as protected. So, if you list &lt;em&gt;&#8220;family_gallery&#8221;&lt;/em&gt; as a protected site, you need to create a template called &lt;em&gt;&#8220;family_gallery.liquid&#8221;&lt;/em&gt;. This page will be available at &lt;em&gt;http://yoursite.com/protected/family_galery&lt;/em&gt;. The page &lt;em&gt;http://yoursite.com/protected&lt;/em&gt; will show a login form (if not logged in) or the conten of &lt;em&gt;&#8220;protected_index.liquid&#8221;&lt;/em&gt; (otherwise).&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-19:584</id>
    <published>2009-11-19T16:29:00Z</published>
    <updated>2009-11-19T16:31:17Z</updated>
    <category term="Code"/>
    <category term="madness"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/11/19/ambiguity-madness" rel="alternate" type="text/html"/>
    <title>Ambiguity madness</title>
<content type="html">
            &lt;p&gt;Coding in hastiness combined with a limited vocabulary late at night will certainly result in comprehension difficulties at the very next morning:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;&amp;lt;%= &quot;#{t(&quot;role.role&quot;)}&quot; %&gt;: &amp;lt;%= &quot;#{t(&quot;role.&quot;+role.role)}&quot; %&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Kids, don&#8217;t try this at home.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-05:575</id>
    <published>2009-11-05T11:36:00Z</published>
    <updated>2009-11-05T11:37:20Z</updated>
    <category term="Semantics"/>
    <category term="linked data"/>
    <category term="owl"/>
    <category term="rdf"/>
    <category term="semantic web"/>
    <link href="http://semantosoph.net/2009/11/5/inference-on-the-semantic-web" rel="alternate" type="text/html"/>
    <title>Inference on the Semantic Web</title>
<content type="html">
            &lt;p&gt;This is a very informative slideshare on inference and the power of the &lt;a href=&quot;http://en.wikipedia.org/wiki/Semantic_Web&quot;&gt;Semantic Web&lt;/a&gt;. To emphasize the potential of the Semantic Web, &lt;a href=&quot;http://intelligentweb.tistory.com/&quot;&gt;Myungjin Lee&lt;/a&gt; used &lt;span class=&quot;caps&quot;&gt;RDF&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;OWL&lt;/span&gt; constructs to represent the statements of his slides. Very impressive, though.&lt;/p&gt;


&lt;div&gt;&lt;a href=&quot;http://www.slideshare.net/onlyjiny/inference-on-the-semantic-web&quot; title=&quot;Inference on the Semantic Web&quot;&gt;Inference on the Semantic Web&lt;/a&gt;&lt;div&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/onlyjiny&quot;&gt;Myungjin Lee&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-03:573</id>
    <published>2009-11-03T23:01:00Z</published>
    <updated>2009-11-03T22:54:42Z</updated>
    <category term="Code"/>
    <category term="how-to"/>
    <category term="mephisto"/>
    <link href="http://semantosoph.net/2009/11/3/sections-and-pagination-in-mephisto-0-8-2" rel="alternate" type="text/html"/>
    <title>Sections and Pagination in Mephisto 0.8.2</title>
<content type="html">
            &lt;p&gt;It is wildly known and even somewhat accepted, that the pagination mechanism of Mephisto 0.8.2 is very buggy and non-functional. However, paging blog posts is a feature that kills a blog engine if it does not work. Fortunately, James of &lt;a href=&quot;http://railstalk.com&quot;&gt;Rails Talk&lt;/a&gt; wrote a &lt;a href=&quot;http://railstalk.com/2009/8/12/setting-up-mephisto-articles-pagination&quot;&gt;nice tutorial&lt;/a&gt; for bringing up paging again. His description is easy done and works well, as long as you have only one section, the mandatory &lt;em&gt;Home&lt;/em&gt; section.&lt;/p&gt;


	&lt;p&gt;However, blogs with multiple sections (like this one) faced a strange problem with doubled section names in URLs. A workaround with separate &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; helpers for each section &lt;a href=&quot;http://gist.github.com/177100&quot;&gt;exists&lt;/a&gt;, but is utterly unhandy. After some investigation it turns out, that a small change to the original tutorial solves the whole section difficulty. The original instruction was to add the following to &lt;em&gt;mephisto_paged_article_list/lib/paged_article_list/link_helpers.rb&lt;/em&gt;:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;def path_for( path_info, page_number )
  return path_info[:path] + &quot;/page/&quot; + page_number.to_s
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, when using this with multiple sections, &lt;em&gt;path_info[:path]&lt;/em&gt; contains the name of the current section (or nothing, if the section is &lt;em&gt;Home&lt;/em&gt;). Moreover, the produced path is a relative path, so that the returned string will be appended to the base &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; that already contains the section name as the last part. This is where the doubled section names come from. To remove this behaviour, we need to change the code a little bit:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;def path_for( path_info, page_number )
  path = path_info[:path] + '/page/' + page_number.to_s
  path_info[:path].blank? ? path : '/' + path
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;With this code, we assemble the path the same way, but precede it with a &#8217;/&#8217; whenever the section name is not empty. This gives us a non-relative &lt;span class=&quot;caps&quot;&gt;URL&lt;/span&gt; without the doubled section name and thus correct pagination URLs for all sections.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-03:568</id>
    <published>2009-11-03T21:16:00Z</published>
    <updated>2009-11-03T22:45:38Z</updated>
    <category term="Semantics"/>
    <category term="html5"/>
    <category term="semantic web"/>
    <link href="http://semantosoph.net/2009/11/3/html5-and-semantics" rel="alternate" type="text/html"/>
    <title>HTML5 and Semantics</title>
<content type="html">
            &lt;p&gt;If you ever did a web project that featured dated entries, like articles in a blog, you may have typed something like&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;div&gt;
  &lt;ul&gt;
    &lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Link 1&lt;/li&gt;
    &lt;li&gt;Link 2&lt;/li&gt;
    &lt;li&gt;Link 3&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;and&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;&lt;span class=&quot;publication-date&quot;&gt;2009-11-03&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, this is higly understandable for any developer and for most of your users, but not for crawlers and the like. As this is the central issue in the field of the semantic web, there are already some solutions that address this problem. You could, for example, enhance your code with semantic markup like &lt;a href=&quot;http://semantosoph.net/2009/5/15/google-accepts-rdfa-and-microformat&quot;&gt;RDFa or microformats&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;But then, that may be overkill. Why not just use the possibilities that come with the shiny new &lt;a href=&quot;http://dev.w3.org/html5/html-author/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;HTML5&lt;/span&gt;&lt;/a&gt;? Most of the modern browsers &lt;a href=&quot;http://diveintohtml5.org/detect.html&quot;&gt;already support&lt;/a&gt; at least some of the new features. Features, in this case, are new &lt;a href=&quot;http://www.ibm.com/developerworks/library/x-html5/?ca=dgr-lnxw01NewHTML&quot;&gt;text-level semantic tags&lt;/a&gt; that allow a lightweight semantic annotation of content. With the use of these new tags, our first example would read:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Link 1&lt;/li&gt;
    &lt;li&gt;Link 2&lt;/li&gt;
    &lt;li&gt;Link 3&lt;/li&gt;
  &lt;/ul&gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This enables screen readers, mostly used by people with limited sight, to jump directly to the sites menu and allow a quick navigation. Even more fun comes with the second example:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;html&quot;&gt;2009-11-03&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This promotes the human readable string to a full machine readable timestamp that tells every crawler/browser/whatever the publication date of the embracing document.&lt;/p&gt;


	&lt;p&gt;If you want to learn more about these two and all the other cool new tags, please have a look at &lt;a href=&quot;http://diveintohtml5.org/&quot;&gt;Dive into &lt;span class=&quot;caps&quot;&gt;HTML5&lt;/span&gt;&lt;/a&gt;, a clearly structured and neatly designed publication by the great &lt;a href=&quot;http://diveintomark.org&quot;&gt;Mark Pilgrim&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-02:189</id>
    <published>2009-11-02T13:41:00Z</published>
    <updated>2009-11-02T13:43:56Z</updated>
    <category term="Semantics"/>
    <category term="gtm"/>
    <category term="ontology"/>
    <category term="semantic web"/>
    <category term="topic maps"/>
    <link href="http://semantosoph.net/2009/11/2/martian-notation-for-topic-maps" rel="alternate" type="text/html"/>
    <title>Martian Notation for Topic Maps</title>
<content type="html">
            &lt;p&gt;Many people tend to understand structures much better when they are properly visualized. So it comes to no surprise that there were some proposals for a Graphical Topic Map notation (&lt;a href=&quot;http://www.topicmapslab.de/glossary/GTM&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GTM&lt;/span&gt;&lt;/a&gt;) made in the past. The guys from &lt;a href=&quot;http://musicdna.info&quot;&gt;musicDNA&lt;/a&gt; recently stepped into the spotlight with their &lt;a href=&quot;http://www.topicmapslab.de/publications/topic_map_martin_notation&quot;&gt;latest publication&lt;/a&gt; that illustrates Topic Maps by using a Martian as example. Unsurprisingly, they call it &lt;a href=&quot;http://cd.tp/TMMN/&quot;&gt;Topic Map Martian Notation&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-11-01:100</id>
    <published>2009-11-01T11:42:00Z</published>
    <updated>2009-11-02T13:44:57Z</updated>
    <category term="Semantics"/>
    <category term="tmra"/>
    <category term="topic maps lab"/>
    <link href="http://semantosoph.net/2009/11/1/topic-maps-lab-moves" rel="alternate" type="text/html"/>
    <title>Topic Maps Lab moves</title>
<content type="html">
            &lt;p&gt;In the past days, the Topic Maps Lab has moved in different ways. First of all, we had to leave our own 9th floor offices in downtown and moved to the ground floor of the computer science department building. The new offices have a sgnificant lack of look-out but give us much shorter paths to the rest of the department. Fotos will follow, but don&#8217;t expect something spectacular.&lt;/p&gt;


	&lt;p&gt;Aside from moving geographically, we constantly move forward to &lt;span class=&quot;caps&quot;&gt;TMRA 2009&lt;/span&gt;. With only ten days to go, the conference organization and proceedings are moving towards completion. I, for my part, finished the proceedings on last thursday and will rouse the print office on tuesday, so you all will have a freshly printed proceedings book in your conference package.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; If you are coming to &lt;span class=&quot;caps&quot;&gt;TMRA 2009&lt;/span&gt; and are in need of getting something to eat (beyond the great conference catering), I strongly recommend a visit at the newly opened &lt;a href=&quot;http://www.vapiano.com&quot;&gt;Vapiano Restaurant&lt;/a&gt; in &lt;a href=&quot;http://www.vapiano.de/locations/index.php?lang=us&amp;amp;sub=del1&quot;&gt;downtown Leipzig&lt;/a&gt;. They serve great italian food, freshly made before your eyes with fair prizes.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-09-29:38</id>
    <published>2009-09-29T08:40:00Z</published>
    <updated>2009-11-01T22:09:59Z</updated>
    <category term="Circumstance"/>
    <category term="cat content"/>
    <link href="http://semantosoph.net/2009/9/29/simon-s-cat-hot-spot" rel="alternate" type="text/html"/>
    <title>Simon's cat: Hot Spot</title>
<content type="html">
            &lt;p&gt;A demanding cat goes to great lengths in order to warm up and become the centre of attention.&lt;/p&gt;



          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-08-02:34</id>
    <published>2009-08-02T11:10:00Z</published>
    <updated>2009-11-03T20:25:15Z</updated>
    <category term="Circumstance"/>
    <category term="cat content"/>
    <link href="http://semantosoph.net/2009/8/2/simons-cat-the-fly-guy" rel="alternate" type="text/html"/>
    <title>Simon's Cat: The Fly Guy</title>
<content type="html">
            &lt;p&gt;The cat is back. &lt;a href=&quot;http://simonscat.com&quot;&gt;Simon Tofields&lt;/a&gt; lates masterpiece pictures a scene that every cat owner is familiar with. A playful cat and an agile fly is always good for some wrecking.&lt;/p&gt;



          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-08-01:32</id>
    <published>2009-08-01T07:00:00Z</published>
    <updated>2009-11-01T11:05:10Z</updated>
    <category term="Code"/>
    <category term="how-to"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/8/1/howto-write-your-own-plugin-for-mephisto" rel="alternate" type="text/html"/>
    <title>Howto write your own plugin for mephisto</title>
<content type="html">
            &lt;p&gt;On my crusade on gaining more insight into &lt;a href=&quot;http://mephistoblog.com&quot;&gt;mephisto&lt;/a&gt;, I felt it would be helpful to see how this plugin thingy works. I found, that writing your own mephisto plugin is not as hard as you would think. In fact, it is real easy. Start with generating the plugin skeleton.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;# ruby script/generate plugin NameOfYourPlugin&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, define your method inside &lt;em&gt;lib/name_of_your_plugin.rb&lt;/em&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;module NameOfYourPlugin

  def link_to_something_strange(object_to_yield)
    url =  'http://example.com/api?'
    url += &quot;id=#{object_to_yield['some_attribute']}&quot; 
    content_tag :a, 'foobar', :href =&gt; url
  end
end&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;After that, open &lt;em&gt;init.rb&lt;/em&gt; and paste in the following:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;require 'name_of_your_plugin'
Liquid::Template.register_filter NameOfYourPlugin&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The first line is the standard registration you need for every rails plugin. The second line registers whatever method you defined as a global liquid filter. If you like to add another filter, just put the method inside &lt;em&gt;lib/name_of_your_plugin.rb&lt;/em&gt; and it will be automagically registered.&lt;/p&gt;


	&lt;p&gt;The last step is to include your fresh filter into the liquid template.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;{{ object_to_yield | link_to_something_strange }}&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;That&#8217;s all folks. Really. Be sure to check the &lt;a href=&quot;http://semantosoph.net/2009/7/31/a-gravatar-plugin-for-mephisto&quot;&gt;first fruit&lt;/a&gt; of this new gained insights.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://semantosoph.net/">
    <author>
      <name>semantosoph</name>
    </author>
    <id>tag:semantosoph.net,2009-07-31:33</id>
    <published>2009-07-31T07:00:00Z</published>
    <updated>2010-03-26T11:39:42Z</updated>
    <category term="Code"/>
    <category term="gravatar"/>
    <category term="mephisto"/>
    <category term="plugin"/>
    <category term="rails"/>
    <category term="ruby"/>
    <link href="http://semantosoph.net/2009/7/31/a-gravatar-plugin-for-mephisto" rel="alternate" type="text/html"/>
    <title>A gravatar plugin for mephisto</title>
<content type="html">
            &lt;p&gt;Although the mephisto blog system contains a possibility to display a gravatar for a specific comment, I decided to do my own gravatar plugin, because I wanted to display gravatars not just on comments. You can download the first version from &lt;a href=&quot;http://github.com/semantosoph/mephisto-gravatar-plugin/tree/master&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;


	&lt;h3&gt;Installation&lt;/h3&gt;


	&lt;p&gt;Installation is real simple. Just download it and put it into your vendor/plugins folder. After that, restart your server.&lt;/p&gt;


	&lt;h3&gt;Options&lt;/h3&gt;


	&lt;p&gt;You may configure the following options in lib/mephisto_gravatar_plugin.rb:&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;default = 'identicon'&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;The guys at gravatar.com offer you &lt;a href=&quot;http://en.gravatar.com/site/implement/url&quot;&gt;three default avatars&lt;/a&gt;, in case there is no gravatar associated with that email address. Correct values for would be &lt;em&gt;identicon&lt;/em&gt;, &lt;em&gt;monsterid&lt;/em&gt; and &lt;em&gt;wavatar&lt;/em&gt;.&lt;/p&gt;


&lt;pre&gt;&lt;code class=&quot;ruby&quot;&gt;rating = 'pg'&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;As you may know, all gravatars include a rating, done by the holder of the email. This &lt;a href=&quot;http://en.wikipedia.org/wiki/Motion_picture_rating_system#United_States&quot;&gt;rating&lt;/a&gt; may be one of the following: &lt;em&gt;g, pg, r&lt;/em&gt; or &lt;em&gt;x&lt;/em&gt;. To get only the gravatars you want, set the correct rating.&lt;/p&gt;


	&lt;h3&gt;Usage&lt;/h3&gt;


	&lt;p&gt;You can stuff any email into the filter, in order to get its gravatar. Sample usages:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;{{ article.author.email | get_gravatar }}
{{ comment.author_email | get_gravatar, 30 }}&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Note the object independence. An email address is all you need. You may deliver the desired size as an option to the filter. Leaving that out brings up the standard size of 80&#215;80px.&lt;/p&gt;


	&lt;p&gt;There is still work to do. I think about pre-caching all gravatars for the registered bloggers. But that is subject to later exploration.&lt;/p&gt;
          </content>  </entry>
</feed>

