Hi all,
we have released D2RQ V0.2 today.
As Semantic Web technologies are getting mature, there is a growing need for
RDF applications to access the content of non-RDF, legacy databases without
having to replicate the whole database into RDF. D2RQ is a declarative
language to describe mappings between relational database schemata and
OWL/RDFS ontologies. The mappings allow RDF applications to access the
content of huge, non-RDF databases using Semantic Web query languages like
RDQL.
Using D2RQ you can:
+ query a non-RDF database using RDQL or find(spo).
+ publish the content of a non-RDF database on the Semantic Web using the
Joseki RDF server.
+ access information in a non-RDF database using the Jena model API.
+ do RDFS and OWL inferencing over the content of a non-RDF database using
the Jena ontology API.
D2RQ is implemented as a Jena graph, the basic information representation
object within the Jena framework. A D2RQ graph wraps one or more local
relational databases into a virtual, read-only RDF graph. It rewrites Jena
API calls, find() and RDQL queries to application-data-model specific SQL
queries. The result sets of these SQL queries are transformed into RDF
triples which are passed up to the higher layers of the Jena framework.
For details about D2RQ see:
+ D2RQ Homepage: http://www.wiwiss.fu-berlin.de/suhl/bizer/d2rq/
+ D2RQ User Manual and Language Specification:
http://www.wiwiss.fu-berlin.de/suhl/bizer/d2rq/spec/
The new D2RQ V0.2 release contains significant language extensions and has a
better query performance than the previous release.
Language extensions:
+ d2rq:TranslationTable between DB and RDF values added.
+ d2rq:condition added; allows filtering by SQL expression.
+ d2rq:AdditionalProperty added.
+ d2rq:containsDuplicates hint added.
+ d2rq:class added; alternative to d2rq:classMap.
+ d2rq:property added; alternative to d2rq:propertyBridge.
Speed improvements:
+ d2rq:valueContains performance optimization hint added.
+ d2rq:valueMaxLength performance optimization hint added.
+ d2rq:valueRegex performance optimization hint added.
+ major speed improvement for queries with large result sets.
+ major speed improvement for maps with URL columns.
Other:
+ logging facility added.
+ security fix: SQL injection vulnerability fixed.
+ bug fix: issue with missing statements when using joins and NULL values.
+ improved map consistency checking and better error messages
+ GraphD2RQ and ModelD2RQ can also be initialised from RDF/XML map file.
+ GraphD2RQ and ModelD2RQ can also be initialised from Jena map model.
+ architectural changes for better maintainability.
+ JUnit test suite added.
+ many small fixes, improvements, speedups and refactorings.
D2RQ V0.2 is now faster than the Jena 2 database backend for most relevant
queries.
See benchmark results for details:
http://www.wiwiss.fu-berlin.de/suhl/bizer/d2rq/benchmarks/
Lots of thanks to Richard Cyganiak (Free University Berlin) who did most of
the implementation work on D2RQ V0.2 and contributed great ideas.
Cheers,
Chris Bizer