RDF Semantics

The DoD taxonomy gallery

I am writing a follow-up post to Cheap Eats at the Semantic Web Café, covering taxonomies as compared to folksonomies, when in my researched I stumbled on to the DoD Taxonomy Gallery.

Unfortunately, registration requires sponsorhip by someone with a .gov or .mil email address. I assume the data isn’t restricted; I imagine registration is to keep access to people who are working with DoD systems. Sure would love to have a peek, though.


Bush: Weblogged and Googled

Recovered from the Wayback Machine.

This new item has hit Slashdot: Deriving Semantic Meaning from Google Results.

Seems a couple of scientists have devised a method where they take page results for pairing of words and from these determine which pairing is more semantically meaningful. They call this the Normalized Google Distance or NGD for short.

Their hope is that this work could be used to assist computers in understanding human language. Or lordy, aren’t weblogs going to mess up the works. Can you imagine the effect?

Machine: I am IGOR, automated voting system. How may I help you?

Human: I am here to vote for President.

Machine: Please input your choice.

Human: I am voting for President Bush

Machine: Just to verify, are you voting for Bush who is the scum bag dirt wad ignorant asshole?

Saaaay. Maybe this isn’t such a bad idea.

Just Shelley

Swivel stick

Recovered from the Wayback Machine.

Loren, who has been sharing tales of courage and horror from his fearsome youth, recounted one incident with a slippery log and a fall into a swift stream. Ever since, he’s hiked out of his way to avoid having to use logs to cross streams.

(He and I also shared a five year old fascination with matches, oddly enough. I wonder if the cause and effect associated with ‘matches’ and ‘uncontrolled fire’ is an epiphany all five year olds undergo?)

I share his wariness of log crossing, but mine is based less on specific event than ongoing experience. Not only do I avoid logs, I also avoid ledges, unsteady hillsides, icy paths, and any form of roller or ice skating. I am a klutz, you see. A rather good one, at that. In a parking lot, I can manage to slip on the one and only wet pinecone; I can climb down rocky paths, only to slip on a bit of gravel at the end. I trip over unseen roots, and knocked myself out trying to chase a ball during softball when I fell into a tree. I even fainted at a wedding once, when we were required to stand for part of the service and I locked my knees, and caused myself to pass out.

When I am in prime physical condition (yeah, that will be the day again), I can move like a panther, all supple strength. But then, something always seems to get in the way.

For instance, Sunday I drove down to Bollinger Mill to film it and the Burfordville covered bridge. It was a perfect day, in the 30’s, excellent weather and the mill and bridge are extremely well maintained. Crossing the covered bridge to the other side, I started down the hill towards the White River in order to get a better shot at the mill and the spillway. I didn’t pay attention to the signs of recent flooding, until I started slipping on the wet mud that covered the hill. Not wanting to slide down on my butt into an icy cold river, I dug my stick into the ground and held on for dear life, twisting and turning to maintain my balance.

“Oh my!” “Watch out!” “Wup!” “Damn, this is slippery” “Youwillnotfall Youwillnot fall!” “Ahh!”

Eventually I managed to stable myself until I could find firmer footing on a bit of rock and from there, pull myself back up the hill, dignity and camera intact. That is until an older man who had been across the way walked over to me and asked me if I was alright. I thanked him and said it was just a slight slip, and nothing much to worry about.

“Well, we were worried that you were going to fall in. Glad you didn’t.”

Then out popped a huge smile.

“I shouldn’t say this, but you sure were funny.”

So much for the panther.

RDF Technology Weblogging

A credible coder

Recovered from the Wayback Machine.

I’ve been silent in this weblog, primarily because I’ve been working on a couple of other projects. I had talked with a good, and wise, friend of mine about this effort and he made a point that I felt was valid: that I should implement those applications or functionalities I’ve talked about previously first, before taking on a new project. It’s all about credibility you see.

Of course, I could point that I’ve delivered numerous tricks, tips, code fixes, not to mention how-tos and tutorials and what not, as well as helping to install 109 weblogs, and answering whatever questions others have asked. I had assumed that this gave me some credibility; Still, I understand what he was saying: complete applications shout where help and tips and fixes only whisper.

So I’ve been working on three major projects. The first is a ‘comment package’ that has much of the nifty comment functionality out at Burningbird, wrapped up into a package that could be used by people using other weblogging tools. This includes live preview, spell check, and post-edit functionalities. I have it finished for WordPress, but I’m also creating a Movable Type and Textpattern backend. These latter are for a couple of friends that have asked for the functionality. More to the point, though, I wanted to demonstrate that one can extend the tools outside of the traditional plug-in environment, and with that extension, make the functionality available to a variety of tools because the data and functionality between the tools is so similar.

This one is almost finished, but incorporating these changes into the templates for the other tools is a bit tricky because they are a changing, not the least because of that nofollow nonsense.

The second project is to provide updates to the material in my chapters for the Practical RDF book. This has been interesting and fun, and I am pleased to see a maturity in both specs and data. I’d like to see the technology a little more easily embeddable, which means lightweight language specific frameworks. But they’re coming.

I’m actually using the technology that I’m covering above in the final project, which is a variation of the Poetry Finder I talked about long ago. However, rather than just poetic annotation, this application will allow one to specify any field of data, such as legal, political, genetics, whatever, and annotate it using RDF statements, which are then added into the MySQL database for a specific weblog post.

It’s not going to require that users understand RDF, or even that developers understand RDF. The developers will be able to define a set of statements they want to capture as a model, and this will be used to generate form statements of the nature of _______________ issomething _____________________. An example would be “bird” IS METAPHOR FOR “freedom”, with the issomething provided by the model developer, and the values provided by the user.

Then, when a post is accessed (either WordPress, or Movable Type implemented as a dynamic PHP weblog) with an “/rdf” extension, .htaccess rules will trigger functionality that will deliver a complete RDF/XML output of all the data that is defined for a resource defined with the URL of the article. So, a specific article could have poetic and political annotation, and both would be combined into one model and returned when the URL is accessed with the “/rdf” extension.

Sure the statements defined using this extension are simple, but most models will consist of simple assertions. A case in point is the example data that I’m using at Practical RDF’s original Query-o-Matic: a listing of all terrorist acts since 1988. Simple, yet; but still managing to capture a lot more context that the other folksonomy/tags implementations I’ve seen.

The tricky part on this is getting the PHP together to maintain the backend services. There is RAP (RDF API in PHP), but it doesn’t implement SPARQL (the W3C RDF query language spec) yet, and I had hoped to use this query language.

My hope is by the time I’m finished with these projects, WordPress 1.5 will be out. I’ll then follow through on Wordform, but based on the final 1.5 product, not one in process. It will also be less ambitous than my original intent, primarily because its for my own use and as a curiousity to others — I don’t expect much interest in it.

What it will have is:

1. All data operations are pulled into a separate file rather than have bits and pieces of SQL scattered about. This makes it a whole lot easier to make changes, especially to the data model.

2. I’ll most likely be altering the comment and trackback spam prevention to incorporate my own ideas, which have shown themselves to be working relatively nicely in Burningbird. I’ve talked about these previously in this weblog.

3. I’m going to change the conditional checks in the code. All of them are as follows:

if ( ’spam’ != $approved ) {

In other words, the literal is first, the variable second. In all my years of programming, you put the variable first, because if it’s null (hasn’t been assigned a value) the conditional fails at that point without having to check the second value. I wasn’t aware that PHP differed in this regard, and I have no idea why the developers of WordPress do it this way. But it bugs me, so I’m changing them for no other reason than it bugs me, unless someone pops in with the reason for this, in which case I won’t. Who knows, maybe PHP does handle this all differently.

4. I’m making the admin more dynamic. Well, I’ve already made this change. With this, you can add a new comment or post status, high level menu item, and individual post menu item by updating tables, as these will not be table driven. In line with this, the semantic data extension talked about earlier will be incorporated into Wordform’s administration pages, as well as my existing fullpage preview functionality, per comment moderation, and post status of ‘insert’.

I won’t be adding multiple weblog support, primarily because it’s a lot of work, I won’t be using it, and Wordform is mainly for my use. The separation of SQL into a separate file should help with this if I ever get energetic about this application again.

When finished with all the various application, I will put them online as GPL open source for others to do with as they will. I’ll be posting on these changes, as well as links to the code, at Burningbird rather than this weblog; except for the Practical RDF book updates, of course, which will go to the book weblog.



Recovered from the Wayback Machine.

Does anyone know of a PHP implementation of SPARQL? Not the adorable kitten who I happen to be god-mother to (and who I can’t connect to at the moment); the W3C RDF/XML query language.

I have my old Query-o-Matic that works — barely — using RDQL, but need to create a updated, hotter version.