I moved the blog’s from Movable Type to NetKernel, for the moment the steps I did were:

  • tidy-​up the static content generated by Movable Type
  • put all the files in a NetKernel module
  • wrote a XSLT 2.0 transformation to apply the new template

Then I annotated the template with hAtom microformat and RDFa, the goal was to yield the same RDF triples from a blog entry wherever I was extracting the RDFa or I was transforming hAtom to Atom (via Robert Bachmann’s hAtom2Atom) and then Atom to RDF (via Masahide Kanzaki’s atom2rdfs).

The result for this entry Semantic Web Logo looks like this (via W3C’s RDFa Distiller). For example that page’s microformats and RDF do also validate:

Having all the blog content available as RDF, I was able to store it in a Talis Platform, and by setting accordingly the atom:content, dc:description and dc:title in both the field predicate map and the query profile; all this data became instantly searchable, for example see this search for ‘semantic.’

Additionally I recreated the Atom feed by querying the metabox via SPARQL and transforming the results, this was very easy to setup as a pipeline in NetKernel:

<?xml version="1.0" encoding="UTF-8"?>
<idoc>
	<seq>
		<instr>
		  <type>httpPost</type>
		  <url>http://api.talis.com/stores/lgridinoc-dev2/services/sparql</url>
		  <nvp>
			<nvp>
				<query>
<![CDATA[
PREFIX	rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX 	rss:  	<http://purl.org/rss/1.0/>
PREFIX 	atom:  	<http://www.w3.org/2005/Atom#>
PREFIX	dc:		<http://purl.org/dc/elements/1.1/>

SELECT 	?s ?updated ?title ?desc ?content
WHERE
{ 	?s	rdf:type		rss:item 	;
   		atom:updated 	?updated 	;
		dc:title		?title		;
		dc:description	?desc		;
		atom:content	?content
}
ORDER BY DESC(?updated) LIMIT 10
]]>
				</query>
			</nvp>
		  </nvp>
		  <target>var:sparql</target>
		</instr>
		<instr>
		  <type>xslt2</type>
		  <operand>var:sparql</operand>
		  <operator>ffcpl:/resources/atom.xsl</operator>
		  <target>this:response</target>
		</instr>
		<instr>
			<type>cast</type>
			<operator>
				<cast>
					<mimetype>application/atom+xml</mimetype>
				</cast>
			</operator>
			<operand>this:response</operand>
			<target>this:response</target>
		</instr>
	</seq>
</idoc>

Next, I have to address linkbacks, comments and new entry creation. To be continued…