19. Release Notes

19.1. Experimental features

From time to time, RDFox releases may include experimental features not intended for use in production. In these cases, the affected APIs will clearly be labeled “EXPERIMENTAL” meaning that they may change or disappear entirely without notice in later versions. Further, Oxford Semantic Technologies offers no support for any API labeled in this way.

If you have feedback or questions regarding any feature of RDFox, whether experimental or not, we would be grateful to hear it via any of the normal channels.

19.2. Releases

Release 5.7
  • Updated the JSON explanation format to serialise facts as objects, rather than strings.

  • Improved the memory usage of main memory tuple tables.

  • Support for the SecureTransport framework on macOS (previously selected with parameter value secure-transport) was dropped. OpenSSL is now required to use TLS on macOS.

  • Removed the clear facts-keep-rules operation.

  • Provided the APIs for changing the maximum allowed memory use of the server at runtime, without having to restart the server.

  • Performance improvements and bug fixes to the Console.

  • The following changes have been made to the configuration of RDFox servers:

    • When a server is created without an explicit server-directory parameter, no server directory will be used. In previous versions the server used a default location in the OS user’s home directory when the parameter was not specified explicitly.

    • In addition to the existing mechanisms for supplying them, server parameters may now be loaded from a file in the server directory. See Section 7.2.1 for details.

    • The shell, daemon and sandbox modes of the RDFox executable no longer have any associated defaults for the persist-roles or persist-ds server parameters. Instead, shell and daemon modes default the server-directory parameter to the same location as was previously used when this parameter was not set explicitly.

  • The modification of access control settings has been decoupled from the modification of server content. This has the following consequences:

    • Roles are no longer automatically granted privileges over the resources that they create.

    • Privileges specific to a resource (such as a data store, data source, tuple table or role) are no longer deleted when the resource is deleted. This, incidentally, fixes an issue introduced in RDFox v5.5 which prevented privileges specific to a data store persisting across sessions (RD-1306).

  • The sandbox mode of the RDFox executable now sets server parameter sandbox-directory to the empty string to disable filesystem sandboxing.

Release 5.6
  • Added the getAnswerVariableName() method to the Cursor interface in JRDFox.

  • Fixed a bug where anonymous variables (called __AVAR__n) introduced internally during compilation would be returned in SELECT * queries (RD-1242).

  • Parameters specifying durations may now be specifed with an optional unit of either s or ms. If no unit is specified, the integer part is interpreted as a number of whole seconds.

  • Introduced an EXPERIMENTAL extension of the REST API that allows remote execution of shell commands and an accompanying new mode for the RDFox executable, remote.

  • Added shell command rwtest to test reading and writing in data stores.

  • Improved the performance of reasoning with rules that reference the rdfox:SKOLEM built-in tuple.

  • Fixed a bug with the creation of data stores in the Console. If the server is configured to persist data stores to files by default, an option in the Advanced Settings dialog is provided to prevent a newly created data store from being persisted. This setting had no effect.

  • Improvements to the Console’s “Explore” mode:

    • A new “Highlight reasoning” control has been added to the toolbar. Relationships between entities that only exist as a consequence of rules may be displayed in a different colour to those relationships that are explicit within the RDF data.

    • The context menu on nodes has been enhanced with a control to copy the associated RDF entity.

    • A new context menu has been added to edges, with controls to delete the edge, copy the IRI of the edge’s predicate, or copy the associated fact.

    • The zoom and pan controls have been moved to the bottom right corner of the canvas.

    • The performance of visualising small subgraphs of very large data stores has been improved.

  • Fixed the following issues in the Console’s “SPARQL” mode:

    • The editor inserted spaces in place of Tab characters inconsistently.

    • The line and column number of a SPARQL error were omitted from the error message.

  • Fixed the following issues in the Console’s “Explore” mode:

    • A relationship between the same pair of entities in multiple named graphs was incorrectly visualised.

    • A warning (that the visualised graph may be inconsistent with the current state of the RDFox data store) was incorrectly dismissed.

    • On visualising a set of query results consisting of over one hundred individuals, the set of connections between the visualised nodes may have been incomplete.

    • Edges representing blank nodes (in generalized RDF data stores where blank nodes may be used as predicates) were labelled incorrectly.

    • Long string literals, particularly those containing a language tag, were incorrectly visualised in some browsers.

Release 5.5
  • Introduced the following changes to the monitoring of importation, querying and reasoning in the CLI:

    • Added an import monitor called progress, which outputs information at the specified log-frequency.

    • Renamed the stats query monitor to profile and changed it to print information at the specified log-frequency.

    • Added a reasoning monitor called profile, which (periodically) outputs reasoning statistics on per rule or rule plan basis.

  • Fixed an issue with the handling of XSDDateTime and XSDDuration values.

  • Fixed an issue with escaping of whitespaces in IRIs (RD-1213).

  • Fixed a bug that could cause the endpoint to crash when a request is aborted with an error (e.g., due to timeout) and another request is issued afterwards.

  • Fixed a bug that prevented tuple tables/named graphs from being deleted.

  • Fixed a bug in the evaluation of property paths for which the source and target need to match.

  • Fixed a bug that could cause MIN and MAX aggregate functions to yield undeterministic behaviour when applied to IRIs.

  • Added command unset to unset shell variables.

  • Added shell variable on-error to configure the behaviour of the shell when an error is encountered.

  • Companion Docker images now return a non-zero return code if an error is encountered while running any mounted initialize.rdfox script, except if the error is due to an attempt to create a resource with a name that is already in use.

  • The proprietary application/x.sparql-results+json-abbrev and application/x.sparql-results+resourceid formats for SPARQL results were modified.

  • Fixed a bug with the TopK iterator.

  • Extended the endpoint with support for explaining reasoning.

  • Changed the available fact domains to explicit, derived, and all.

  • Provided a proprietary extension of SPARQL that allows finding out whether a fact is explicitly given in the input or is derived by a rule.

  • Changed the auto-update-statistics data store option.

  • Added the sandbox-directory server option.

  • Fixed a bug in the initialization of data source tuple tables for delimitedFile sources.

  • Improved the performance of the Console’s visualisation of query answers.

  • Improved the Console’s visualisation and exploration of large graphs of query answers and of large data stores.

  • Improved the Console’s exploration of reflexive properties.

  • Improved display of progress and error states in the Console’s “Explore” mode.

  • Fixed a bug in the Console editor that caused some SPARQL keywords within string literals to be interpreted as commands.

  • The JRDFox methods of the tech.oxfordsemantic.jrdfox.client.DataStoreConnection with names beginning getTransactionMust and setTransactionMust were renamed to instead begin getNextOperationMust and setNextOperationMust respectively.

  • The JRDFox method tech.oxfordsemantic.jrdfox.client.DataStoreConnection.getLastTransactionDataStoreVersion was renamed tech.oxfordsemantic.jrdfox.client.DataStoreConnection.getDataStoreVersionAfterLastOperation.

  • The HTTP method required for opening and advancing cursors was changed from POST to PATCH.

  • ETags are no longer sent while read-write transactions are open on a data store and the If-Match and If-None-Match headers can no longer be used in combination with a data store connection while a read-write transaction is open on the connection.

  • The version of a data store now changes only when a non-empty read-write transaction is committed. Previously, the version was incremented when any read-write transaction was begun.

Release 5.4
  • Fixed bug that prevented query-time-limit and allow-query-time-limit-override from being modified when launching daemon processes.

  • Fix bug that caused process error messages not to be written to standard error.

Release 5.3
  • Moved to a two-part version number format.

  • Replaced server parameter log-calls with api-log which has the same effect.

  • Added server parameter api-log.directory to configure the root directory for API logs.

  • Implemented recording of inputs imported by the system as an extension of the existing API logging feature. Recording can be limited or disabled with new parameter api-log.input-recording-limit.

  • API logging now captures details of exceptions and operation durations to the log.

  • Added a prefixes command to support listing and clearing the shell’s prefixes as well as restoring the default prefixes.

  • Added a proprietary MUL aggregate function that multiplies its arguments.

  • The web console is no longer EXPERIMENTAL.

  • Fixed the spelling of JRDFox API ConnectionFactory.getNumberOfLocaServerRoles to ConnectionFactory.getNumberOfLocalServerRoles.

  • Added new endpoint parameters query-time-limit and allow-query-time-limit-override.

Release 5.2.1
  • Fixed a crash when importing malformed imports.

Release 5.2.0
  • Introduced support for using-graph-uri and using-named-graph-uri when evaluating updates in the SPARQL endpoint.

  • Changed the keep-alive-timeout endpoint option to connection-keep-alive-time in order to unify this with a similar option for the Solr data source.

  • Added support for property paths in SHACL validation. Integrated SHACL validation with equality reasoning. Added an optional column to the built-in table rdfox:SHACL that specifies the fact domain of the validated data.

  • Fixed a bug with large incremental addiditons and deletions of rules (RD-1069).

  • Fixed a bug where property paths would be evaluated incorrectly in queries containing two or more FROM clauses (RD-1091).

  • Upgraded the import command to accept IRIs as well as file paths.

  • Ensure that relative IRIs entered into the shell are expanded against the shell’s base IRI.

  • Added a base command to print or set the shell’s base IRI.

  • Added the tuple table rdfox:DependencyGraph, which can be used to analyse the dependency graphs of Datalog programs.

Release 5.1.0
  • Modified handling of aggregate functions with empty GROUP BY as described in this blog post.

  • Server and data store connections used by the RDFox shell can now be managed explicitly via the new commands srvconn and dsconn.

  • As part of the above change, the role switch command was removed.

  • Added new shell command evaluate for evaluating general SPARQL statements where a statement is either an update or a query.

  • Fixed a bug where the answer command would accept SPARQL updates as well as queries. The command now accepts only queries.

  • Fixed a bug which prevented update commands using the ! symbol from executing.

  • Fixed a bug where destructive operations in the shell would be executed even if the user did not confirm them (SUP-123).

  • The methods for saving a data store in binary format were moved from tech.oxfordsemantic.jrdfox.client.ServerConnection to tech.oxfordsemantic.jrdfox.client.DataStoreConnection.

  • Correctness fix to reasoning in a rare multithreaded situation (SUP-128).

  • Added new endpoint parameters channel-timeout, keep-alive-timeout and max-idle-connections.

  • The endpoint parameters sweep-period and sweeps-to-reclaim were replaced with the single parameter object-keep-alive-time.

Release 5.0.0
  • Added native support for Apple Silicon.

  • Implemented support for SPARQL 1.1 property paths.

  • Upgraded delimitedFile and solr data source tuple tables to use the data types inferred from the source tables, where appropriate.

  • Renamed the ODBC data source parameter name-quote to quoted-identifier-quote.

  • Added HTTP request logging for the RDFox endpoint controlled by new endpoint parameters request-logger and elf-logger-fields.

  • Introduced the built-in table rdfox:SHACL for performing RDF constraint validation with the language SHACL.

  • Reworked the OWL support by removing the owl-in-rdf-support option and adding the explicit APIs for imprting OWL axioms into a named graph (RD-879).

  • Added an EXPERIMENTAL C API. Header files are located within the include directory within the RDFox distribution.

  • A bug was fixed where the specified default graph was not always taken into account during importation of RDF data.

  • Improved the performance of answering queries that combine LIMIT and ORDER BY to compute the top K results.

  • Improved the evaluation of queries that combine ORDER BY and DISTINCT (SUP 118).

Release 4.2.0
  • Integration with AWS Marketplace.

  • Images in the oxfordsemantic/rdfox-init repository now accept a subset of RDFox’s supported command line parameters to use when initializing new server directories.

  • Add a health check to the REST API.

  • Shell command dstore create now returns an error if there is an existing data store with the specified name.

  • Replace the shell commands load and save with corresponding subcommands to the dstore command.

  • Delete previously deprecated shell commands drop, explicate, init and updatestats.

  • Fix bug where HTTPS server certificates were not verified. This affected SPARQL LOAD and solr data sources.

  • Add verify-server-certificates parameter for solr data sources.

  • The shell command clear, as well as the delete subcommand of the dstore, role and tupletable commands, now require the user to confirm the operation unless force is specified as the final argument to the command.

  • Corrected a bug in the planning of rules where valid rules were rejected (RD-944).

Release 4.1.0
  • The CONSTRAINT_VIOLATION built-in was removed.

  • A bug in the XML and JSON query answer formats was corrected where undefined variable would be serialized as UNDEF (insted of simply omitting their value).

  • The SKOLEM built-in function was removed, and instead the rdfox:SKOLEM built-in tuple table was introduced.

  • The internal:triple tuple table was renamed into rdfox:DefaultTriples.

  • All of SPARQL 1.1 Update has been implemented (i.e., LOAD, CREATE, DROP, etc.).

  • Added a number of built-in operators and functions, particularly numeric and date/time computation functions. For example, dates can now be subtracted to obtain a duration.

Release 4.0.0
  • Added a data source type solr for integrating with Apache Solr.

  • Added the option to treat negation in SWRL as nonmonotonic negation.

  • Validate parameters passed after the daemon mode specifier in an RDFox executable command.

  • Add a new proprietary built-in, CONSTRAINT_VIOLATION, to make blank node identifiers for constraint violations.

  • The default setting for the endpoint parameter min-secure-protocol is now tls12.

  • Corrected a bug in the reasoning algorithms where incrementally adding rules would sometimes produce incorrect results (RD-858).

  • Restoring persisted data stores uses multiple threads and can be significantly faster than previous versions of RDFox.

  • Persisted data store file format uses compression to reduce disk usage.

  • Internal rules to transitively close class hierarchies have been updated to exclude blank nodes (SUP-95).

  • Explicating facts is disallowed in combination with OWL support as that would keep increasing the set of axioms in the store (SUP-95).

  • Named graphs can now be updated through DELETE/INSERT queries.

  • The proprietary syntax for referencing tuple tables in SPARQL queries was changed (e.g., atom that used to be written as :A(?X,?Y) now needs to be written as TT :A { ?X ?Y }).

  • The license can now be passed in using environment variables RDFOX_LICENSE_CONTENT and RDFOX_LICENSE_FILE.

  • Add new shell command daemon. This permanently switches RDFox into daemon mode.

  • The import.rename-blank-nodes data store option was removed, and import.rename-user-blank-nodes data store option was added.

  • Adds an additional mode to the EXPERIMENTAL web console. The connections between the entities in a data store may be visually explored, with either a single individual or the result of a query as a starting point.

  • Added Transcribe command allow server state to be saved and potentially imported into another instance.

  • Added -temp-role command line option.

  • Roles can be created using a password hash. The password hash of existing role can be obtained programmatically or via the shell.

  • Allow forward slashes to be used for file paths in Windows.

  • Fixed a problem that could sometimes cause a crash when evauating FILTER and BIND expressions that compare integers and floating point numbers (SUP-96).

  • Fixed a problem on Windows where one could start two endpoint processes on the same port (RD-592).

Release 3.1.1
  • Fix bug where RDFox fails to start with a “unable to locate incompleted replace information” error on Windows.

Release 3.1.0
  • Fixed a bug where RDFox would crash when a data store is restored from binary files and another operation (on a different data store) is running in parallel

  • Fix bug where RDFox would crash when the server was configured with data store persistence, but a data store without persistence is deleted (SUP-83)

  • Fix bug where RDFox would crash if the NOW() built-in function was written in lowercase (RD-777)

  • Fix bug where blank nodes were serialized incorrectly in the N-Triples and N-Quads formats (SUP-81)

  • Add a mechanism to constrain data store content using Datalog.

  • Add support for SWRL.

Release 3.0.1
  • Fix bug where RDFox fails to start with a file in use error on Windows.

  • Fix bug that causes RDFox to end if the terminal window is resized or a screen session is reconnected during login prompt.

  • Fix bug where data store snapshot files are not deleted when data stores are deleted.

  • Fix bug that caused RDFox to hang or crash if an attempt is made to import invalid data.

  • Allow Ctrl+C to interrupt import operations.

  • Allow Ctrl+C to interrupt loading of persisted data stores during restart.

Release 3.0.0
  • The term ‘user’ is replaced by the term ‘role’ in all JRDFox APIs related to authentication. For example tech.oxfordsemantic.jrdfox.client.DataStoreConnection.getUserName() is replaced by tech.oxfordsemantic.jrdfox.client.DataStoreConnection.getRoleName().

  • When creating server connections for the first time via JRDFox APIs, the default role name and password are now “guest” and “guest”.

  • All references to the namespace org.semanticweb.owlapi have been removed from the JRDFox code base and the owlapi-*.jar file is no longer included in the RDFox distribution. Consequently the following features are no longer available:

    • the overload of tech.oxfordsemantic.jrdfox.client.DataStoreConnection.importData that accepted an org.semanticweb.owlapi.model.OWLOntology

    • the command line facility to generate a Datalog program from an OWL ontology

Release 2.1.1
  • Correct the behavior of COUNT(?v) and COUNT(*).

Release 2.1.0
  • owl-in-rdf-support is no longer EXPERIMENTAL.

  • The JRDFox features that make use of owlapi-*.jar (one of the DataStoreConnection importData methods, and the GetRules utility) are now deprecated. This dependency will be removed in a future release of RDFox. Import of OWL documents (in Functional Style and Turtle syntaxes) will continue to be supported by the remaining importData methods.

Release 2.0.1
  • Fix bug where a crash may occur when the Java or REST interfaces are used to import large data sets (RD-531).

Release 2.0.0
  • The MIME types for the RDFox-proprietary SPARQL answer formats have been consolidated to us the x. subtype tree

  • New proprietary SPARQL answer formats have been added that abbreviate IRI prefixes in the result

  • The binary answer format has been changed

  • Renamed the parameters for obtaining diagnostic information in the REST API

  • Added calls to all APIs for retrieving server-level diagnostic information

  • Removed the query domain parameter in all APIs for exporting data and added the ability to pass in arbitrary key-value pairs

  • Adapted the syntax of the export command to support the change from the previous item

  • Optimized the shell interface by not requiring file names to be enclosed in quotes

  • Embedded an experimental HTML application which is served from /console when the endpoint is running

  • Only add the Access-Control-Allow-Origin header to HTTP responses if the user has configured the allowed origin

  • Added support for importing from files containing axioms represented in OWL 2 functional-style syntax.

  • Added experimental support for OWL 2 axioms translated from imported RDF data.

  • SPARQL query evaluation has been reworked to improve performance and eliminate errors in the returned solution for a small number of query types.

Release 1.6.0
  • RDFox and JRDFox now require a license file

  • Improved support for xsd:decimal on Windows

Release 1.5.0
  • RESTful API supports the HTTP X-HTTP-Method-Override request parameter to allow HTTP PATCH requests to be made from client code that does not directly support PATCH (e.g. Java HttpURLConnection)

  • Improved support for xsd:decimal on macOS and Linux

Release 1.4.0
  • Added support for the following SPARQL 1.1 functions:

    • NOW()

    • UUID()

    • STRUUID()

    • RAND()

    • MD5()

    • SHA1()

    • SHA256()

    • SHA384()

    • SHA512()

    • IRI()

  • RDFox now retains the datatypes of literals in the input — that is, xsd:int is no longer normalized to xsd:integer, and similarly for other derived datatypes (RD-194)

  • Added initial support for xsd:decimal (RD-162)

  • Performance improvements in the evaluation of most built-in functions (RD-196)

  • Import options rename-blank-nodes-on-import and convert-unknown-datatypes-to-strings were replaced with options import.rename-blank-nodes and import.invalid-literal-policy described in Section 8.2

  • Shell variables containing backslash characters are now correctly expanded on the command line (RD-219)

  • There is no restriction on the number of files that can be imported on a single line in the shell (RD-89)

Release 1.3.3
  • SSL/TLS for the RESTful API using openSSL (Windows, macOS, Linux) and Secure Transport (macOS only)

  • Fixed a bug where sending Content-Type: 0 with DELETE requests was incorrectly detected as having a body

  • Extracted the data store statistics into separate data structures that can be administered using the various APIs (RD-27); thus, there is now a way to update the statistics using the REST API

  • Repurposed the stats shell command to manage statistics, and deprecated the updatestats command in favor of stats update

  • Introduced the info shell command that merges the functionality of the old stats command, the rulestats command, and the ruleplan command; added the option to print summary of the information about a data store; removed the rulestats and ruleplan commands

  • Fixed a bug where tuple tables imported from a data source could have repeated column names

  • Extended the OWL translator to support datatypes and datatype restrictions according to the OWL 2 RL specification (RD-53)

  • Improved handling of out-of-memory exceptions (RD-50)

  • Improved handling of situations when the capacity of a data store is exceeded (RD-90)

  • Fixed a bug where parallel import of Turtle files would sometimes slow down or even crash after loading some number of files

  • Improved the performance of importing large numbers of xsd:float and xsd:double values

  • Fixed the bug where incrementally added rules sometimes were not handled correctly (RD-120)

  • OFFSET and LIMIT can not occur in a SPARQL query in an arbitrary order

  • The RDFox command line supports common line editing functions including arrow-key navigation and command history on platforms where this was previously unavailable (macOS and Linux)

  • Commands used when starting RDFox have been revised (now shell or daemon) and options have been added to enable logging of API calls and to set a maximum allowable memory size.

  • Added support for cryptographic hash functions MD5, SHA1, SHA256, SHA384 and SHA512 in rules and queries

  • UCASE() and LCASE() functions are Unicode aware and use the unconditional case mappings as defined by the Unicode Standard 11.0 (RD-8)

  • Added the REGEX() and REPLACE() SPARQL 1.1 functions (RD-5)