Semantic Web Editor
A semantic web browser and editor for the Zaurus.
I've been wanting to mess around with visualising and editing semantic web graphs on the Zaurus for a while, wanting to write some Java, but been put off coding for AWT.
I since found a nice, small, simple yet stylish toolkit called Thinlets which looked ideal, and produced a quick mock-up of an application for browsing and editing RDF files according to selected ontologies.
The next problem was finding an RDF/XML parser which would work on the Zaurus. I started with Jena, but that soon turned out to be a) far too big and b) depend on too much Java 2 stuff to be useful. I even stripped down to the rdf-api which Jena currently seems to use, but even that depends on too much Java 2 stuff.
Tirelessly on I went, next trying the latest version of ARP, which too depends on Java 2 stuff. Now either I go back to earlier versions of these things or try yet more parsers. I found ICS-Forth and also gave up with that.
Finally I happened on Sesame, who have recently stripped out their parser, RIO (RDF input and output), as a separate package.
There were still problems. Sesame uses a SAX2 compliant XML parser and I needed one which would work on the Zaurus. I ended up, after going round the houses a few times, using MinML2, which after slightly hacking both that and RIO, I managed to get going properly on the Zaurus.
Now for some coding. So far I've got a simple application which reads in a hardwired ontology (I'm aiming for OWL Lite compliance) and instance data. It then shows a view of the first instance of the first class in a tree-like pane, letting you drill down any relations (see the SWE Applet above).
The current idea is that I'd like something along the lines of a simple database record viewer, but that the records should be defined by ontologies which can be dynamically loaded.
The above applet loads a "people ontology", which defines a class: Person and properties: firstName, lastName and fiance. The last property is a relation between people, so the model can get horribly self-referential.
The applet just grabs the first defined class, finds the instances, and displays the first person. Scrolling the bar at the bottom left and right cycles through all the records (currently only two).
Ideas and things to do:
- See how much data can be thrown at it.
- Let the user load, change and save data. If the currently loaded file is somehow read-only, don't let the user edit things until the file has been saved as something new.
- Let the user load new ontologies and select which ones to use.
- Figure out how the user should create new resources of a given type, as well as link to existing resources.
- Start building in understanding of OWL.
- Figure out whether it'd be useful for creating ontologies by selecting the OWL ontology.

