New features include preliminary SPARQL 1.1 support, Firebird support, generation of RDFS/OWL schemas for databases, and download maps for making the content of CLOB/BLOB columns accessible via HTTP. Datatype compatibility with Oracle, MySQL, SQL Server and HSQLDB has been greatly improved, and a truckload of bugs has been fixed.
- framework for attaching metadata to D2R Server-genearted RDF and HTML documents (Olaf Hartig and Hannes Mühleisen)
- D2R Server provides direct HTTP access to BLOB/CLOB contents via d2rq:DownloadMap
- support for Firebird/Interbase database
- generate-mapping can output RDFS representation of the DB using -v switch (David Venable)
- initial SPARQL 1.1 support via ARQ, not yet optimized
- generate-mapping can be limited to a single schema using -s argument
- support PostgreSQL UUID type (Kurt Jacobson)
- ignore sysdiagrams table on SQL Server (Giovanni Mels)
- better command line help for generate-mapping
- upgrade core libraries: ARQ 2.9, Jena 2.7, Joseki 3.4.4, Jetty 8.1.1
- upgrade other libraries: Velocity 1.7, SLF4J 1.6.4, log4j 1.2.16, HSQLDB 2.8.8
- replace all references to Notation 3 (.n3) with Turtle (.ttl)
- better handling of Oracle tables with very long names (Jacobus Geluk)
- better handling of many Oracle datatypes (Jacobus Geluk)
- Snorql now works on IE (Jacobus Geluk)
- Clickable links in Snorql XSLT output (Jacobus Geluk)
- show some progress indication on generate-mapping (Jacobus Geluk)
- restructured and much improved documentation
- added support for TIME columns (as xsd:time) and BINARY (as xsd:hexBinary)
- support NaN and INF for DOUBLE columns on HSQLDB
- added d2rq:intervalColumn, d2rq:bitColumn, d2rq:booleanColumn
- d2rq:startupSQLScript and -l switch allow specifying a SQL script to execute before startup
- treat MySQL TINYINT(1) type as xsd:boolean
- add support for BIT datatype on (hopefully) all DBs that support it
- better handling of config file location under Windows
- NPE for Oracle DATE and TIMESTAMP when database contains NULL (Jan-Gregor Fischer)
- fix issue where Tomcat wouldn't find some of the jars
- translation table implementations wouldn't work if they inherit from a class that implements the interface (zazi)
- wrong queries with --fast if property bridge requires joining the same table twice (Giovanni Mels)
- NPE if tableIndexStatistics are present (Giovanni Mels)
- UTF-8 encoding issue in Snorql (Giovanni Mels)
- d2rq:alias on the target of d2rq:refersToClassMap didn't work properly
- fix issue where Tomcat would complain about missing commons-logging
- properly shut down webapp if keep-alive thread is used (Giovanni Mels)
- make d2rq:constantValue work properly on class maps (Giovanni Mels)
- fixed a bug in DistributiveLawApplyer when using functions (bound(), isIRI()...) (Giovanni Mels)
- translate all clauses of an (A || B) filter correctly (Giovanni Mels)
- stop D2R Server forgetting --fast setting on mapping file reload
- cleaned up the D2RQ namespace RDFS file to reflect the implementation
- Oracle datatype fixes: DATE, TIMESTAMP, BLOB, BINARY_FILE, BINARY_DOUBLE
- fix several exceptions when querying for typed literals outside of the SQL type's range
- fix querying for large integer literals
- added extensive datatype test suites for HSQLDB and MySQL
- fix for DATE handling on SQL Server
- fix MySQL issue with dates >=24h and dates <0h
- fix MySQL issue with all-zero DATEs, DATETIMEs, TIMESTAMPs and YEARs
- translate filters on literals to SQL (Giovanni Mels)
- support for SPARQL built-in functions like datatype(), lang(), isIRI() (Giovanni Mels)
- combine relations more aggressively when d2rq:containsDuplicates is true
- move main website to http://d2rq.org/
- D2R Server is no longer a stand-alone download, but bundled directly with D2RQ
- moved source code and issue tracking to GitHub, http://github.com/d2rq/d2rq
- now officially requires Java 1.5
- removed outdated Sesame support
- removed RDQL support as ARQ no longer supports it
- removed dedicated ODBC-JDBC support (still available via 3rd-party ODBC-JDBC bridges)
Version 0.7 provides several bugfixes, better dump performance, several new features as well as new optimizations that must be enabled using d2rq:useAllOptimizations, or via D2R Server's --fast switch.
- Added support for Microsoft SQL Server
- Added support for dynamic properties (by Jörg Henß)
- Added support for d2rq:limit, d2rq:limitInverse, d2rq:orderAsc and d2rq:orderDesc (thanks to Matthias Quasthoff)
- Added d2rq:useAllOptimizations option for bleeding-edge optimizations
- Added d2rq:fetchSize to control the number of rows retrieved per database query. Activated by default from dump_rdf.
- Added SQL cursor support and MySQL streaming to facilitate dumping of large databases (based on a patch by Alistair Miles)
- Added support for !!a => a in DeMorganLawApplyer; improved DistributiveLawApplyer
- Added output warning about uriPatterns without columns during both mapping generation and loading
- Updated to MySQL Connector/J 5.1.7 due to reported hanging errors
- Updated to ARQ 2.7 (Jena 2.6), Joseki CVS (2008-12), SDB 1.3
- Removed dependencies on Oracle and MySQL libraries
- Removed non-open source JDBC drivers from distribution
- Added note to documentation: Vocabulary serving does not work with SPARQL
- Added Database-specific LIMIT implementations
- Fixed filtering on variables with an sqlExpression property bridge (#2620006, Herwig Leimer)
- Modified treatment of nonmoveable filter expressions in D2RQTreeOptimizer, skip variable retention on subUsage in VarFinder (Herwig Leimer)
- Fully removed buggy leftjoin optimization (#2634088, #2645486)
- Let the JDBC driver convert boolean values separately as their representation differs greatly amongst DBs (thanks to Alistair Miles)
- Fixed JDBC-ODBC Bridge interoperability (MS Access etc.) - refactored ResultRowMap to return values with a single get???() call
- Relaxed table naming conditions to support hyphens and numbers in table names (thanks to Heinz Doerrer, bug #2664865)
- Properly iterate over trivial relations (fixes ResultRow to Tripe casting bug)
- Don't create a link table if it exports foreign keys (#2787278)
- Support case-insensitive RelationName comparison for MySQL and allow map generation from keys with unspecified capitalization
- Fixed a bug with the keepAliveAgent which didn't terminate when dump_rdf is used
- Handle multiple projection specs for SPARQL variable within TransformExprToSQLApplyer
- Moved DISTINCT before TOP in SQL queries
- Fixed a bug in DistributiveLawApplyer
- Added self-join optimization (#2798308). Enable using --fast command-line option in D2R Server, or d2rq:useAllOptimizations.
- Added support for directed arrows in d2rq:join to indicate foreign key relationship and to utilize them for correct join optimization (#1794042)
- Omit empty NodeRelations when translating graph patterns
- Keep uniqueness when working with just one Relation in TripleRelationJoiner (requires --fast)
- Only check for predicate URI matches only if dynamic properties are present in the mapping
- Translate filter expressions involving constant nodes to SQL
- d2rq:sqlExpression
- d2rq:uriSqlExpression for properties with URI values, similar to d2rq:sqlExpression but generates URIs instead of literals (Andreas Langegger)
- Support for serving vocabulary classes and properties; including definition labels, comments and additional properties
- New ARQ-based QueryEngine, dropped the old FastPath engine
- Mapping generator now supports multi-column foreign key constraints
- Specify JDBC connection properties through the jdbc: namespace
- Better error reporting
- Oracle support - automatic registration of the JDBC driver, DATE, TIMESTAMP and CLOB field types
- Support for PostgreSQL's TIMESTAMP WITH TIME ZONE type
- Proper treatment of xsd:boolean datatype
- Show XML declaration and make sure that utf-8 encoding is used for XML
- Map parser now complains about misspelled D2RQ vocabulary terms
- Remove MySQL hack for zero date values from the mapping generator, use zeroDateTimeBehavior property instead
- Change dump-rdf default format to N-TRIPLE (faster, better streaming)
- Push-down and transformation of SPARQL filter expressions into SQL, if possible
- Transformation of SPARQL optionals into SQL left joins; some cases only
- many bugfixes
- Replaced custom Logger with Log4j one
- Give more memory to VM in dump-rdf and generate-mapping scripts
- added d2rq:resultSizeLimit option
- smarter mapping generator
- columns with non-URI characters can now be used in URI patterns
- many bugfixes
- supports the SPARQL query language.
- added dump-rdf command line script.
- added automatic mapping generator.
- added Jena Assembler for D2RQ models.
- improved compatibility with MySQL, Oracle and PostgreSQL.
- compatible with Jena 2.4 and ARQ 1.4
- many other improvements.
- many bugfixes.
- Wrapper for Sesame added.
- d2rq:queryHandler added.
- d2rq:expressionTranslator added.
- d2rq:alias added.
- New experimental D2RQQueryHandler for speeding up complex RDQL queries.
- 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.
- 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.
- 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.
- Initial D2RQ Release.