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:
- hCard, hEntry and rel-license via Optimus microformats transformer
- RDF triples via W3C’s RDF validator
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…
No comments yet.
RSS feed for comments on this post. TrackBack URI