Warning: this service has been stopped at this URL. I have changed hosting provider, and the architecture used originally by service is not available.

The underlying code on GitHub; you should downloading the package and use it locally (see the distribution section below for more details). Maintenance is done by a group led by Nicholas Car at CSIRO in Australia. Nicholas and his colleagues also plan to set up a similar service to replace this one. (As soon as it has been set up I will add the reference here, too.)

RDFS and OWL 2 RL generator service

What is was it?

The service performs a forward chaining on RDF files using either RDFS or the “derivation rules” of OWL 2 RL, possibly adding axiomatic triples, too. The service returns the expanded graph that includes all possible extra triples defined by these specifications. The code relies on 22nd of September, 2009 version of OWL 2 RL, and passes all official tests as provided by the OWL Working Group that aimed at the OWL 2 RL derivation rules. (See caveats below…).

The service generates all possible triples, even in case an inconsistency occurs (eg, using owl:sameAs and owl:differentFrom on the same subject/object pairs). An error information is added into the generated graph in the form of a blank node with properties referring to the error itself.

Additional notes

This is not a production quality service! Essentially, this is simply a proof-of-concepts implementation, naïvely simple and not optimized, i.e., probably not usable for larger graphs. (E.g., all owl:sameAs triples are simply added to the output graph; more sophisticated implementation would produce those triples only at query time.) However, as a proof-of-concepts implementation it had its value nevertheless: the core engine has been implemented on top of a standard, off-the-shelf RDF library (RDFLib) without any sophisticated rule engine, and it did not require months’ of work (the most complex part was to handle the datatypes properly, simply because the underlying RDFLib implementation was slightly incomplete in this respect). This simplicity being one of the goals of OWL 2 RL, this tool is a good testimony to OWL 2 RL’s feasibility…

There is a bug in the underlying Turtle parser of RDFLib, though, that was not handled. The abbreviations of double datatypes of the form 1.234E56 (to stand for "1.234E56"^^xsd:double) throws, unfortunately, a parsing exception. Better to keep away from that…


The code is available for download from GitHub: it includes the Python package, examples for the usage of the package as part of a Web based service or on a command line, as well as a full documentation of the package. It can be used either as part of an RDFLib application, but the script to set up a service like this one is also part of the distribution. In its latest version the package can be used with Python 2 as well as Python 3.

The package can also be installed using pip; the package name is owlrl (i.e., use pip install owlrl to install the package).

An online documentation is also available.

Ivan Herman, (ivan@ivan-herman.net)