I wanted to try using virtuoso as the storage engine for Redland but unfortunately there is no librdf-storage-virtuoso package for Ubuntu. After getting some help from @dajobe, I attempted to build the packages myself. Although it takes quite some time to build packages, but not too difficult it seems.
The version of Redland that I am attempting to build is 1.0.13, and unfortunately this means I would have to build librasqal3 too as the version provided by Ubuntu Natty is not up to date. Installing the packages may cause some breakage, so… YMMV.
Pre-requisites
By following the instructions here, add this source repository to /etc/apt/sources.list
deb-src http://download.librdf.org/binaries/debian/unstable ./
And then run an apt-get update
$ sudo apt-get update
Building Rasqal
To build Rasqal, first grab the source package
$ sudo apt-get source librasqal
Grab the source packages
$ sudo apt-get source librasqal3
.. install the dependencies
$ sudo apt-get build-dep librasqal3 librasqal3-dev
Then build them
$ sudo apt-get -b source librasqal3
Then install librasqal3, librasqal3-dev, rasqal-utils
Build Redland
First we will need to grab the packages
$ sudo apt-get -b source librdf0
You may get an error saying some packages can’t be downloaded, in particular the source package. Just download this into the same directory as the other downloaded tarballs and rename it as redland_1.0.13.orig.tar.gz (Note: as of writing, source packages for 1.0.14 is not out yet, you may want to adjust when package for 1.0.14 is out).
There are some other dependencies besides the listed ones that needs to be installed, to install all of them, issue these commands
$ sudo apt-get install virtuoso-opensource unixodbc-dev
$ sudo apt-get build-dep librdf0
Now we can proceed to build Redland
$ sudo apt-get -b source librdf0
To build librdf-storage-virtuoso, Navigate to $REDLAND_SRC/redland-1.0.13/debian and edit a file named ‘control’ (without the quotes). Append this to the end of the file.
Package: librdf-storage-virtuoso
Section: libs
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Replaces: librdf0 (<< 1.0.9-3)
Description: RDF library, Virtuoso backend
Redland is a library that provides a high-level interface for RDF
(Resource Description Framework) implemented in an object-based API.
It is modular and supports different RDF/XML parsers, storage
mechanisms and other elements. Redland is designed for applications
developers to provide RDF support in their applications as well as
for RDF developers to experiment with the technology.
.
This package contains the Virtuoso storage backend.
Edit a file named 'files' (without the quotes) and append this line
librdf-storage-virtuoso_1.0.13-2_i386.deb libs optional
Add a new file named librdf-storage-virtuoso.install with the following content
debian/tmp/usr/lib/redland/librdf_storage_virtuoso.so
Add another file named librdf-storage-virtuoso.substvars
shlibs:Depends=libc6 (>= 2.3.6-6~), libc6 (>= 2.4), libdb4.8, librdf0 (>= 1.0.13), unixodbc (>= 2.2.11)
misc:Depends=
Not sure what happens, but that was the edited version after building the packages, my original version is shown below (will update once I find out why)
shlibs:Depends=libc6 (>= 2.3.6-6~), libc6 (>= 2.4), libdb4.8, librdf0 (>= 1.0.13), unixodbc-dev (>= 2.2.14p2-2ubuntu1), virtuoso-opensource (>= 6.1.2+dfsg1-1ubuntu4)
misc:Depends=
Lastly, create a new file named librdf-storage-virtuoso.debhelper.log from librdf-storage-mysql.debhelper.log Apparently this file is generated automatically, thanks @dajobe for the tip again.
Lastly, navigate back to $REDLAND_SRC and build the packages again
# apt-get -b source librdf0
Building Redland-bindings
Same thing again, first grab the source packages
$ sudo apt-get source redland-bindings
Since I am just interested in the php5-librdf package, I issue this to fetch the dependencies
$ sudo apt-get build-dep php5-librdf
Proceed with building
$ sudo apt-get -b source php5-librdf
Everything looks fine as of now, but I am seeing some random conflicts. Will try to work with the virtuoso storage engine and post a follow up later today.