RDF2SVG and Svolgo redux

Rich Boakes just ran into a trail of my incompetency - some uncool URIs. I changed ISP, different email address, didn't get notification that my registered domains were about to expire and lost two domains in quick succession. What he was looking for was a little RDF2SVG I did a few years ago (it's dated 2002, but I can't square that with the dates of our arrival in Italy - I'm sure this stuff predates that, but that wouldn't explain the Italianate project title, memory oh memory).

This was part of a Java "Graph Visualisation/Transformation Framework" I put together called Svolgo. The "Graph" part mostly meant RDF, "Visualization" meant SVG, the "Transformation" bit was mostly referring to format transformation, and "Framework" was rather pompous for what I'd actually built. Which goes like this:

Svolgo features a generic graph model, with multiple concrete subclass trees. Each tree corresponds to some specific representation, I can't remember exactly what I'd got but they included RDF, GraphXML, RGML, some kind of arbitrary XML, something resembling the GraphViz dot format and SVG. Most of these representations have their own parser and serializer (I forget exactly - but I doubt I did a parser for interpreting SVG). The generic graph supports an event-driven Observer and each of the concrete representations has a Listener. In some (relatively simple) code you hook up the required Listeners to the Observer. When you parsed source data into a specific graph representation (e.g. RDF), node/arc creation events were monitored by the Observer, and parallel object graphs are constructed in whichever class tree(s) were listening. From there you can use the serialiser of that class tree to get the data in a different format. There's a description of some example code which reads GraphXML data and outputs RGML and SVG. Oh yeah, and in there is also a Spring Layout subsystem for the SVG visualization (it does the calculations in the Java, the SVG is static), and a simple kind of rule-based mapping thing to (moderately) generalise from the input XML nodes & arcs to the internal nodes & arcs.

Rich was hoping for a 'plug and go' RDF2SVG jar. I did make one of those but it seems I didn't snapshot the source on the specific working version. There is slightly newer version of the source, doesn't look like I got around to revising the RDF2SVG, nor did I finish tidying up the visualisation. I think some of the scaling stuff must have been hardcoded, I remember the SVG looking ok for very simple graphs but horrendous for anything with more than a handful of nodes. Performance wasn't very good either, but that will have been due in part to memory limitations back then. Its dependencies are the Jena and Batik libs.

I actually wrote a paper on it for some conference or other, which got summarily rejected. At the time I was annoyed by that, but when I re-read the paper a month or two later it really was lousy (not sure what happened to that, prolly best forgotten). That hit my confidence in going further with the Svolgo thing so in this form it languished, although I did use much of the same code in the first prototype of IdeaGraph.

Might well be a good time to revisit this with SVG finally on the rise, but I haven't really got time right now. Doesn't look like I thought about a license at the time - if anyone wants to do anything with this stuff then pick something that covers 'use freely, attribution appreciated'. I'm pretty sure it wouldn't be that hard to make RDF2SVG 'plug and go', but there'll be quite a lot of refactoring needed (I wonder if the Graph constructs in Jena 2 could be used directly?).

PS. Heh, what I hadn't done is search this blog to see if I'd mentioned this before - yup, three previous posts (most recent 2 yrs ago) all beginning with something like "I just received an email…". There's the key bit of source to doing RDF2SVG on this post.

[Danny]

Danny Ayers
2005-10-18T10:52:00Z

Related
Comments
Edit