Uche Ogbuji comments
in his blog about the
use of WebDAV and
SQLX in my blog as part of his commentary about Pyblosxom
& WebDAV. To provide some clarity about Virtuoso and
Blogging I have decided to put out this quick step by guide to the
workings of my blog (there is a long overdue technical white paper
nearing completion that address this subject in more detail).
Here goes:
Blog Editing
I can use any editor that supports the following Blog Post
APIs:
- Moveable Type
- Meta Weblog
- Blogger
Typically I use Virtuoso (which has an unreleasedWYSIWYG
blog post editor), Newzcrawler, ecto, Zempt, or w.bloggar for my posts. If a post is
of interest to me, or relevant to our company or customersI
tend to perform one of the following tasks:
- Generate a post using the "Blog This" feature of my blog
editor
-Write a new post that was triggered by a previously read
post etc.
Either way, the posts end up in our company wide blog server
that is Virtuoso based (more about this below). The internal blog
server automatically categorizes my blog posts, and automagically
determines which posts to upstream to other public blogs that I
author (e.g http://kidehen.typepad.com ) or
co-author (e.g http://www.openlinksw.com/weblogs/uda
and http://www.openlinksw.com/weblogs/virtuoso
). I write once and my posts are dispatched conditionally to
multiple outlets.
RSS/Atom/RDF Aggregation &
Reading
I discover, subscribe to, andview blog feeds using
Newzcrawler (primarily),
and from time to time for experimentation and evaluation purposes I
use RSS
Bandit,FeedDemon, and Bloglines. I am in the process of
moving this activity over to Virtuoso completely due to the large
number of feeds that I consume on a daily basis (scalability is a
bit of a problem with current aggregators).
Blog Publishing
When you visit my blog you are experiencing the soon to be
released Virtuoso Blog Publishing engine first hand, which is
howWebDAV, SQLX, XQuery/XPath, and Free Text etc. come into
the mix.
Each time I create a post internally, or subscribe to an
external feed, the data ends up in Virtuoso's SQL Engine (this is
how we handle some of the obvious scalability challenges associated
with large subscription counts). This engine is SQL2000N based,
which implies that it can transform SQL to XML on the fly using
recent extensions to SQL in the form of SQLX (prior to the
emergence of this standard we used the FOR XML SQL syntax
extensions for the same result). It also has its own in-built XSLT
processor (DB Engineresident), and validating XML parser
(with support for XML Schema). Thus, my RSS/RDF/Atom
archives, FOAF, BlogRoll, OPML, and OCS blog syndication gems
are all live examples of SQLX documents that leverage Virtuoso's
WebDAV engine for exposure toBlog Clients.
Blog Search
When you search for blog posts using the basic or advanced
search features of my blog, you end up interacting with one of
the following methods of querying data hosted in Virtuoso: Free
Text Search, XPath, or XQuery. The
result sets produced by the search feature uses SQLX to produce
subscription gems (RSS/Atom/RDF/OpenSearch)
and
URIs that enable dynamic tracking of my posts using your search
keywords.
BTW - the http://www.openlinksw.com/blog/~kidehen
blog home page exists as a result of Virtuoso's Virtual Domain /
Multi-Homing Web Server functionality. The entire site resides in
an Object Relational DBMS, and I can take my DB file across
Windows, Solaris, Linux, Mac OS X, FreeBSD, AIX, HP-UX, IRIX, and
SCO UnixWare without missing a single beat! All I have to do is
instantiate my Virtuoso server and my weblog is live.