Saturday, July 09, 2005

USA
I hate jet lag. I'm currently 9 hours (and one day) away from home, and I don't feel so good. Hopefully I'll get over it soon.

The flights took me to LA, then on to Dulles in Virginia. I got to relax for a day, then that night drove 2 hours through pouring rain to Baltimore. It was a bit rough given how tired I was. The next day (Friday) I worked until 4pm. At that point I was supposed to sit back and take it easy, but my sister-in-law decided to get me a cheap flight and fly me down to Houston for my brother's 30th birthday. I'm still exhausted (especially after a few drinks and a late night with my brother last night), but it's all starting to slow down for me now.

Hopefully I can have a quiet day tomorrow before flying back to Baltimore in preparation for work on Monday.

Other than the unpleasant physical effects, I enjoy traveling. I still miss Anne and Luc though.

Consistency
I spent most of the trip reading and watching videos, but I did get to write a bit of code. However, it was mostly documentation, so there's no new functionality to report. However, I've had time to re-prioritize what I'm doing, and I expect to do the consistency checks soon. This shouldn't be too hard, so I hope to put them in during my evenings in the coming week.

Consistency will be good for a couple of reasons. The first will be for specific applications to write consistency tests for particular implementations. It will also be useful for implementing OWL. I don't have all the functionality needed for OWL yet (subsumption being the biggest problem), but I can still get a lot done without it. It makes a lot of sense to implement as much of OWL as I can, and then incrementally improve the support.

Sunday, July 03, 2005

Tests
All the W3C entailment tests are now scripted, working, and checked in. It's very nice to see. :-)

There are a few caveats to these tests, but that is by design.

First, there are no datatype entailments. I'm not sure what you can entail from a datatype. The only test for it says that the following results in a "False" document:

  <http://example.org/prop> <rdfs:range> <rdf:XMLLiteral>
<http://example.org/foo> <http://example.org/prop> "<"^^<rdf:XMLLiteral>
I could write a resolver to check this kind of thing, only it would need to create statements like:
  <rdf:XMLLiteral> <tucana:isTypeFor> "<"
But I'm skeptical about working too closely with data types for RDFS, since I may need to consider the different types of literals as well. I may look at this later.

Next is that there are no consistency checks. There are a few reasons for this. Consistency checks don't entail new data (well, you could say that they entail a false document, but no new statements). Next is that I planned on making consistency checks a part of OWL, and hadn't really considered it before now. However, just as I was getting to the last tests I found one which checks that the following is wrong:
  <http://example.org/foo> <rdf:type> <rdf:Property>
<http://example.org/bar> <rdfs:subClassOf> <http://example.org/foo>
It is supposed to use <rdfs:subPropertyOf> instead. This is actually legal in OWL Full (but not DL). It will be tricky making OWL Full a superset of RDFS if I go testing for conditions like that.

Anyway, I can do consistency checks very easily, and it should only take a day of code. However, they were not a part of what I said I'd do for the moment, so I'll put them off until I get a little time (I actually thought I might get them done on the flight... see how I go).

The only other thing I've avoided in the tests is RDF parsing. However, that is already being done elsewhere, and is not relevant to entailment.

This means that I just need to document the format of the RDF for rules, and I've met my current commitments for this code. I still have to make OWL work, but it's still a milestone, and I feel good for it. :-)

Extras
While doing all the tests I added some minor extras as I went.
  • I fixed the Http resolver test that was looking at Sourceforge. It seems that the page changed from html to xml. I'm skeptical of any test that relies on external resources like this, but I can see the usefulness.
  • I added an explicit rollback() when the rule insertions fail.
  • Added some feedback when rules complete.
  • Put in a Dummy Rule loader (at Andrae's request) and made this the default when none is supplied. I couldn't work out how to make the RuleLoader tag optional in the XSD for the configuration file though.
  • When using a model as a rule model, check it for rules or axioms. If none are found then report it as a problem.
There are all sorts of extra bit and pieces that I want to get working. I need to prioritize my time, but it would be nice to get some of them done. They include:
  • A shortcut command to select all statements from a model (without needing to select the subject, predicate and object and give all three in a constraint as well). This should save on some typing!
  • A similar shortcut to count the result of a query. At the moment a count has to be a subquery. When you just want the results of a query that means you need a superfluous model and where clause that has to evaluate to something.
  • More detailed results to applying a set of rules (number of rules, number of axioms, number of generated statements).
The problem with these sorts of things is that they can be a distraction from the real work, but they'd be great to have. If anyone else would like these features, then please feel free to implement them for me. :-)

Friday, July 01, 2005

Batteries
I forgot to mention in my last post that I went and bought a couple of batteries for the PowerBook. Three batteries should give me a good chunk of my upcoming trip with access to the notebook. I'm hoping to get some work done (on about three separate projects) as well as get in some movie time. :-) I have a couple of new DVDs that I've wanted to put some time aside for. I'm guessing that watching a DivX is a lot less power-hungry than spinning the drive of a DVD, so I'll convert them to DivX first. Kind of like ripping a CD for an iPod: morally it's just fine, as all I'm doing it transferring from one media to another, but legally you can't do it (at least, not in Australia. No "fair use" here). Then again, legally I can't listen to my CD's on an iPod either. :-)

Other than movies, I'm hoping to write a few more notes on the structure of the data files in Kowari. Some of this is obscure, and is really only documented in the class implementations (where "documented" means that the code tells you how it's done). I understand it in a general sense, and the code helps clear up anything I forget, but it will be very useful to have real documents that explain it. I've already started on this with the Free Lists (probably the hardest format to follow). This slowed down the Javadoc work, so I'll probably put aside the file format until the flight so I can get through Javadoc before I leave.

Other than that, I still have OWL code to write (I want to put together some subsumption code soon), and I'd love to do a bit more on jCarbonMetadata, which I haven't touched for weeks. Speaking of which, I started on an objective-C tutorial and meant to get back to it. After all, instead of porting the missing Carbon functionality to Java, why not learn objective-C and write a bridge from Cocoa to Carbon? :-)

Yes, this is a lot to do on one flight... but I'll be traveling from 11am in Brisbane until 5pm in D.C., all in one day. That's a total travel time of 20 hours. And no, I can't sleep effectively on flights. My plan is to keep myself busy, which is why I need several things to keep my attention (so I can swap when I lose concentration).

Huxley
The other thing I'm planning on doing on the flight is continuing the novel I've just picked up. I'm finally reading Aldous Huxley's A Brave New World. It's always strange to read old science fiction, as the authors had no idea how far we would come in the twentieth century (computers weren't even invented for decades after Huxley wrote this novel). It's easy to get distracted by thinking different the real world is to the story, so it can take some real concentration to see the point the author was trying to make. However, I'm only into the second chapter and already I love it.

I particularly love the noise-aversion and shock therapy given to Delta babies to make them hate nature and books. It turned my stomach, which was obviously the intent. But the reasoning was masterful. Discouraging Deltas from reading prevent them from wasting time on something they didn't need (something logical for this future world). But it was the reason for hating nature that really struck a chord for me.

Deltas were once allowed to enjoy nature, as they would then consume transport, but that's all they consumed. Nature was gratuitous, and kept no factories busy. So it was decided to abolish a love of nature. However, the desire remained to have Deltas go out to the country to consume transport, even though they now hated the country. So Deltas were made to love country sports, which required the use of expensive and elaborate equipment (thus creating more consumerism). Beautiful.

The scary part about this concept is that modern society mirrors it so much. Sure, we don't condition children with shock therapy... we use advertising instead. However, the end goals are the same, and in my opinion, the fact that we do it to children is just as deplorable.

Huxley wrote this book as a warning to the world about the direction we appeared to be going in. It has had enough influence to slow down some development over the years, but it never really stopped it. It's obviously an insightful story, and I'm looking forward to reading more of it.

Chicago
Advertising at children brings me to a new point. When Luc wants to watch TV we let him see ABC-Kids. This is a brilliant service, as it is government funded and has no commercials. I don't want him to watch too much TV, but at least there is something he can watch that I approve of (the kid is a "Wiggles" addict). I'm wondering if there is a similar TV station in the US? From what I've seen, I really doubt it.

This is just one of many questions I've been pondering lately. I'm considering a move to Chicago to take on a new job. Three years ago I'd have agreed at the drop of a hat, but now that Anne and I have a family it changes the rules. We have a great lifestyle here, and there seem to be some good opportunities coming up if we stay here. It also looks like it would take a bit of money to move to the States (on top of what we've been offered to help us move), and we don't really have any at the moment.

From what I've learned about Chicago, we'd be taking a backward step in our lifestyle (based on what I'd be earning). On the other hand, I've been wanting the experience of working overseas, and this could be the opportunity to do it. Besides, even if we take a backward step, then we can still take forward steps in the future.

The other thing is that (almost) everyone I've spoken to about Chicago has recommended it as a great city to be in (though I haven't heard any specific reasons why). Alternatively, Anne is scared about managing two kids (including a newborn) in a city where she knows no-one. So it's a bit of a toss-up for us. I'll be going to Chicago at the end of my trip to have a look around. Hopefully that will help us to make the decision (though I'll need Anne's support).

I'm mentioning it here in case anyone knows Chicago (and the US in general) and has an opinion to share. :-)