Yes, I wrote earlier about revisiting Wilbur. Now it is Piglet's turn. Some of my recent tweets (like this and this) may lead you to believe I am waffling between Common Lisp (and thus, perhaps, Wilbur) and Python (and Piglet, respectively, although it also has some C++ code). Your conclusion would be correct, I am.
Piglet was open-sourced some time ago as part of the Smart-M3 codebase. I took that code as my starting point (*) and have been building on that. I am not sure, exactly, where this will lead, but I always felt what I did earlier with the OINK data browser didn't quite get as far as I would have wanted to.
A few days ago I ported/installed Piglet and OINK on my new Raspberry Pi, and this silly trick has really energized my to see what I could do with Piglet. Porting was not difficult although I needed to change some of the header files in my C++ code. Python code was not a problem. To get Piglet to build, I needed libsqlite3-dev, libraptor-dev and python-dev installed first, of course.
I am including here a screenshot of OINK being served from my Raspberry Pi.
(*) In case you were wondering why I had to specifically fork an open-source distribution of Piglet: Some months ago I left Nokia and thus I needed a legitimate, unencumbered version of Piglet. Why I left I will explain in some future blog post.
Post-mortem on my CIDOC 2012 -keynote
Last week, I gave a keynote speech titled "Love Thy Data (or: Apps Considered Harmful)" at the CIDOC 2012 conference in Helsinki. It appears the speech went well, and I got many comments afterwards; generally, folks agreed with my general message:
- Data has longevity, whereas apps and systems processing data will come and go.
- Take extra effort to share your data; make sure others can extend your data model(s)
- "Apps", the current craze, contribute to isolation of data (also the isolation of logic and presentation, mind you).
For commentary on the whole conference (including my speech), search for the #cidoc2012 on Twitter.
The conference was well organized and interesting. The venues were quite unique: I gave my keynote talk in the grand auditorium of the Finnish National Museum, and also listened to other presentation at Kiasma, the National Museum of Contemporary Art.
As for the background of this question of "isolation" of data (specifically, semantic isolation), I have had endless conversations with my colleague Ian Oliver abut the topic. Ian has now written a very nice series of blog posts on this, you will find them worth reading (part 1, part 2 and part 2½).
Death of Apps
Together with my colleague Ian Oliver I have been revisiting our old, favorite topic: The Death of Applications. This is continuation of the work we did at NRC with M3, and of the thinking I describe in my IdeasProject interview. Ian has also recently blogged about this.
So far, the thinking goes like this: "apps" are the concrete manifestation of locking data, logic and/or presentation in a proverbial "silo", and as such contribute to the fragmentation of information space. "There's an app for that" should be thought of as a curse, not as something positive.
Read Ian's blog entry on this, it goes more into details about our idea of "isolation", how apps isolate data and prevent access, reuse and integration.
I will give a keynote talk at the CIDOC 2012 conference in June, and will discuss these thoughts. This has been long time coming, and I look forward to discussing/debating this with folks.
Time to revisit Wilbur, part 2
I am happy to say that after I blogged about a Wilbur "redux", several people have already contacted me about the idea.
Now I have been thinking mostly what existing software I could use in the reimplementation. Last few years, many good quality libraries for Common Lisp have emerged. Here's my current thinking about the most critical bits:
- HTTP client: Drakma
- HTTP server: Hunchentoot (the Common Lisp version of OINK, on top of Wilbur, uses Portable Allegroserve, but I think we need to let go of that now)
- XML parser: several choices are available (CL-XML, S-XML, CXML), I have to figure out which one would make sense; I just need a "SAX-like" API for the RDF parser (which will be recycled from the Wilbur2 implementation)
- SQL connectivity: CL-SQL
- HTML generation: possibly CL-WHO, but the functionality I implemented for OINK earlier is actually pretty good and could be reused
Many other libraries also under consideration (URIs/URLs, EXIF metadata extraction, JSON, etc.).
On a slightly different topic, someone suggested I should consider reimplementing Wilbur in Clojure. Certainly then the availability of libraries would not be a problem.
Time to revisit Wilbur
I have been thinking about "revisiting" Wilbur, my Semantic Web toolkit implemented in Common Lisp. Wilbur has not been maintained for several years, and I have been doing most of my prototyping using Piglet, a reimplementation of Wilbur (in Python and C++).
If I were to redesign and reimplement Wilbur (probably as "Wilbur 3" this time), I would like to base it on
- Piglet database design (including support for aspect-oriented data), and
- best-of-breed CL libraries for various thing I might need (HTTP client, XML parser, etc.), rather than "rolling my own" as I did for the original Wilbur (because nothing existed at the time).
I also have some ideas about how to take the code written for OINK and use it as some kind of an "object-relational mapper" (or RDF equivalent thereof).