I’ve been pretty preoccupied with thoughts about the semantic web and how to utilize the possibilities of it recently. My problems with the various protocols, XML formats and microformats have been the lack of consuming services. In other words; it has been relatively painless to construct websites in a semantic way using microformats etc. but no cool services or applications have utilized it. In that regard it has felt much like just an idea with no real purpose.

So I have been challenging my self to come up with ideas to utilize the semantic web – a way to consume some of this data in a way that makes sense. One of the formats I have been paying attention to is APML (Attention Profiling Markup Language).

APML explained

To put it very simple, APML is an XML file that holds information about a person’s interests and ranks them relative to each other. It looks like this:

<Concepts>
  <Concept key=”Gardening” value=”0.75”>
  <Concept key=”Programming” value=”1”>
  <Concept key=”Motorcycles” value=”0.6”>
  <Concept key=”Reading” value=”0.4”>
  <Concept key=”Diving” value=”0.2”>
</Concepts>

The key attribute is the interest and the value represents the relative rank of the individual interests from 0 to 1 where 1 is of the highest interest. Here is my APML file auto generated from tags and categories on this blog. Emily Chang wrote a post about APML with some good examples of its uses.

Filter content

You probably subscribe to some blogs by RSS and some of those blog authors sometimes write posts that aren’t of your interest. Still they end up in your RSS reader. Wouldn’t it be cool if you could utilize your APML file to filter that content so you only got the posts that matches your interests? I would think so.

I’ve just implemented APML support on this blog for both the RSS and ATOM feeds, but also for the search page. If you specify a URL to an APML file as a query string to the RSS feed, you’ll get an RSS feed back that is filtered to match your interests.

Check out the RSS feed or the search result both filtered using the same APML file. The APML file used belongs to John Dyer, the maker of FreeTextBox and also the guy that pointed me to APML in the first place.

APML filtering will be fully supported in the next version of BlogEngine.NET as well.

It’s been awhile since I’ve written about the next version of BlogEngine.NET that we have been working on for the past three months. It is not because the development has slowed down, but because we have worked very hard on all the new features. Some of them are listed in the roadmap and some are not, so I thought I’d give a brief overview on some of the stuff we are working on.

Database factory

Even though XML is preferred by the masses as data storage, there’s still some who thinks it’s less than optimal for their needs. When SQL Server support was added we made a lot of people happy. However, we have had a lot of requests for a MySQL provider and even a few for PostgreSQL and Oracle. Instead of writing providers for each of these databases, we decided to write a single provider called DatabaseProvider which will work on any T-SQL compliant database. That means out-of-the-box support for SQL Server, MySQL, Oracle, Access etc.

Widgets

Since the extension model was introduced in version 1.2, it has been really popular. The widget model expands the same kind of extensibility introduced by the extensions and elevates it to a whole new level. Widgets can be created easily by even the newbie ASP.NET developer and is very easy to apply to your own blog. Each widget can then be dragged and dropped in a Widget zone like the one on the right side panel on this blog.

Each widget can be edited directly from the widget itself in a Lightbox kind of fashion and BlogEngine.NET handles how settings are saved and retrieved automatically. Check out this video I made displaying the early prototype. It has become much more powerful and easy to write since and I plan to start testing it on this blog in a week’s time or so.

Author profiles

We are implementing a profile provider to handle profile information for each registered author. Now any author can edit her own profile including name, photo and about me text. BlogEngine.NET will then generate a profile page for each author. A widget displaying the authors with their pictures and links to their profile page will also be part of the default installation.

Because authors now have a profile image, we can then use it to support Pavatars and use the picture in the comments as well. The profile image can be a Gravatar, an uploaded image or a URL to any picture on the web.

Semantic web improvements

The current version already contains a lot of microformats out-of-the-box such as XFN, rel-tags, XOXO, xFolk, VoteLinks, rel-home, rel-directory, rel-directory and rel-bookmark.

This is pretty good and definitely better than most other blog platforms, but we can do even more. Since the next version will have author profile pages we can now add other elements like hCard, FOAF, OWL and a personal APML file. SIOC will also be supported.

If the timeframe permits it, the search page will let you type in the URL to an APML file and you’ll get a list of posts and pages that matches your interests from that APML file. All of this will probably make BlogEngine.NET the most semantic web supporting blog platform.

New admin navigation

The admin menu is very static today and it’s difficult to control the permissions to individual admin pages, since you have to edit multiple XML files. Also, each added page adds a new horizontal tab and we’re almost running out of space.

The new admin menu addresses these issues and makes it really easy for people to add custom pages. Each admin page must inherit from a special base page that forces you to give each page a display name. If you have written a photo gallery that needs one or more admin pages, you will be able to do that by dumping a folder with the admin pages needed into the /admin/pages folder. The menu will then, by using reflection, create the menu items automatically. The default.aspx will be the main menu item and all other .aspx pages will be sub menu items.

To handle the security on build-in and custom admin pages, administrators will have the ability to easily define which roles can access the different admin pages.

New page structure

Pages have been part of BlogEngine.NET since the first release almost a year ago. Then came the ability to build a page hierarchy and with a sitemap provider you could build a dropdown menu on your theme. You can even mark a page as being the homepage instead of the blog chronology.

Still, a lot of users have requested an easier and more powerful way of organizing and presenting the pages in a menu structure. To do that, a special admin page will be added that let’s you create a menu structure based on your own pages and pages like the build in contact, archive and blog pages. We haven’t specified this yet, but my guess is that it will be some sort of tree view where you can drag and drop the different pages around to build the hierarchy.

Community website

A lot of people have written extensions and designed new themes and with the new widget feature we expect a lot of exciting widgets being written as well. Today, we don’t really have a place to share all these creations, but that will change with the introduction of the community website.

It will allow developers and designers to upload themes, extensions and widgets for anyone to download. The community site isn’t part of the next version of BlogEngine.NET but it will be released around the same time. In time the community site will be the hub for all BlogEngine.NET resources like community written blog posts, custom add-ons and downloads.

Other improvements

  • Slugs on pages and categories
  • Subcategories
  • Better live comment preview
  • Tag selector when creating and editing posts
  • Role manager admin page
  • SSL support for Windows Live Writer and the MetaWeblog API
  • New settings mechanism for extensions, widgets and theme settings
  • OpenID delegate support (and if time permits, login support as well)
  • Better comment spam protection
  • More admin settings
  • Many new system events for extensions to act upon

As you can tell, the listed features are not small ones and that is why this release has taken a longer time to develop then the previous ones. This is by far the biggest release in BlogEngine.NET history and illustrates the ambitions we have with the project.

There is no release date yet, since we still have a long way to be feature complete, but my guess is that it will be in the end of May.