Releases: Ontotext-AD/ontorefine-client
v1.8.0
Overview
New major release introducing new commands related to recently introduced functionality for project aliases and configurations in Ontotext Refine.
New
-
Introduced new command for retrieval of project configurations, which is based on the Refine extension. This extension provides a way for the users to export more complete set of configurations for a project so that they can be reused for creation of other projects.
The configurations include the import options for the uploaded dataset and the operations history of the project.
The primary reason for the extension is the usage of this configuration in the CLI transformation pipelines. Therefore the CLI commands will be updated to accept and work this configuration. -
Introduced new command for identifying project by using alias or project id. The command is related to the new functionality introduced in Ontotext Refine 1.2, where the users are able to assign aliases to the projects and afterwards using them as reference.
-
Introduced new command for updating project alias(es). As the command for the project identification, it is related to the new functionality in Ontotext Refine 1.2.
The command can be used to add and/or remove alias(es) from a specific project.
Changes
- Removed old
create
method fromRefineClients
. The method was deprecated and announced for removal in version1.4
. All of the related logic and tests were either updated or removed. - Updates the version of all third party dependencies used by the project. This is done in order to keep the project up-to-date and avoid potential security issues due vulnerabilities in the libraries.
Bug fixes
-
Fixed the error messages for creation of the projects. The expected response code from the operation is usually
302
. When the code is different, the produced error message is rather misleading, then helpful. There are cases when the code is200
and the user receives message for error with status code200
. -
Fixed an issue with the provision of the
options
for the create project command. It is related to the way the arguments are expected and handled in the OpenRefine.
Basically Theoptions
should be provided as query parameters to the request, instead of as part of the request payload.
v1.7.1
Overview
Patch version fixing some minor issues related to the engine properties serialization, when using create project command.
New
- Added
record-based
options for theEngines
enum. The reason is completeness.
Changes
- Removed the
TODO.md
as we aren't really keeping it up-to-date. Instead we are using internal JIRA tasks and the issues tracker of the project.
Bug fixes
- Fixed the publishing of the library in the Maven Repository, when new release is created. The problem was that the URL for the repository was still using
HTTP
protocol instead ofHTTPS
, which caused an error while uploading the artifacts into the repository. - Fixed the string serialization of the
Engines
enum values. The previous mechanism was causing parsing errors in the OpenRefine, when theexport
command was executed.
v1.7.0
Overview
The new major version of the library brings a lot of changes and enhancements. There are primary related to the separation of the Ontotext Refine and GraphDB products.
Note that there are few breaking changes which are related to the compatibility of the library with GraphDB 9.x versions.
New
- Added new profile
local
for Maven builds which disables the dependency and checkstyle checks. This profile is used for quick local build that is to be used for testing. - Introduced new command for RDF export, which uses Ontotext Refine to generate the RDF, instead GraphDB. The command uses SPARQL CONSTRUCT query to map the tabular project data to RDF. The command uses the SAPRQL endpoint exposed by Ontotext Refine allowing execution of query over the data of specific refine project.
MappingsNormalizer
now handles additional case, where the mappings JSON is passes as array of operations.
Breaking Changes
- The current version introduces some breaking changes related to the separation of the GraphDB and Ontotext Refine. The command for RDF export, now named
GraphDbSparqlBasedRdfExportCommand
will not work with GraphDB 9 anymore. The command will be kept as it is still relevant and it can be adjusted to work with GraphDB instance for more flexibility in the future. Currently there is a workaround allowing the command to work with the the first version of the Ontotext Refine.
Changes
- Updates the version of all third party dependencies used by the project. This is done in order to keep the project up-to-date and avoid potential security issues due vulnerabilities in the libraries.
- Updated the CI and release workflow configurations to use
temurin
Java distribution instead ofadopt
. The main reason for this change is the fact thatadopt
actually moved totemurin
and it won't be supported anymore. - Minor refactoring and renaming for some of the command classes.
Bug fixes
- Updated the retrival of the content length, when deciding whether to store the RDF export result in the memory or a file. Now instead of only relying on the entity content length property, the logic will try to extract the length from the response header.
v1.6.3
Overview
Introduces some changes to the handing of the RDF export results.
Changes
- Changed the logic related to the RDF export return type introduced in
1.6.2
. Now the output type is moved as property of the command, instead of sub-property of theResultFormat
. This way the setting of the options is more transparent and explicit for the user. - Changed the handling of the different result return types from the
ExportRdfResponse
. Now the result can be retrieved by each of the methods which is more convenient for the usage. The actual result is converted from either from the in-memory bufferedString
or temporary file.
Note: when retrieving the result asString
, but it exceeds the buffer size, OOM will be thrown by underlining library used for the conversion. In such cases, it is recommended to work with the file based result.
v1.6.2
Overview
This patch version brings several improvements to the resource handling in the commands and some additional usability features.
New
- Introduced additional return types for the SPARQL based RDF export. Previously the result was returned only as
String
. There are cases, where the produced RDF is quite large and if there is no enough memory to for buffering, the command throws OOM exception, while consuming the stream. With the additional types the users can avoid that problem by writing the stream in the file or directly consuming it from the response object.
The return types are also applied for the default command for RDF export, which uses the mapping JSON from the generated from the Mapping UI.
The users can control the return type by providing differentResultType
to theResultFormat#as(ResultType)
. The default isSTRING
to keep the library compatible and to ease the migration effort.
Changes
- All stream IO operations are now done in
UTF-8
. There are some utility libraries that have different default charset. To keep the library consistent and the behavior predictable, we explicitly set the charset toUTF-8
. - All third party and utility libraries are not updated to the latest version. There were issues with the artifact deployment so in order to solve it some of the libraries had to be updated, but in the process we ended up updating all.
- Updated the versions of the actions used in the CI and Release processes.
Bug fixes
- There were places, where some of the streams were not closed properly, which may cause memory leaks in specific cases. To ensure that the resources are handled correctly, we've updated the logic to explicitly close all of the streams that we touch.
v1.6.1
Overview
Patch version which provides additional fix related to the encoding of the content for the request for the SPARQL RDF export.
Bug fixes
- Changed the mechanism of encoding for the content of the entity, which represents the SPARQL conversion query. Apparently there are characters that are not handled correctly by the
java.net.URLEncoder
. Now we are going to just useUrlEncodedFormEntity
, which handles the encoding in correct way.
v1.6.0
Overview
The version provides some fixes of goofy bugs and moves the project back to the Java 11.
New
- Move the project to Java 11. Initially it was on 11, but after a while it was downgraded to 8, because of internal projects that were still developed on 8. Now we can proceed with the initial plan.
Changes
- Updated the version of the
jackson-databind
library to the latest. The previous is detected as vulnerable by the security scans.
Bug fixes
- Fixed a major bug in the
SparqlBasedRdfExportCommand
. The problem was that the payload for the request (the actual SPARQL query) was not encoded, which in different cases caused an execution of malformed query.
v1.5.0
Overview
The current release brings a new command for RDF export and some usability fixes.
New
- Introduced new command for RDF data export. Instead of a mapping, the command takes advantage SPARQL API of the GraphDB and executed CONSTRUCT query. The query itself contains the data source that should be transformed, in this case that is a OntoRefine project. In order to make the functionality reusable, in other words executable for multiple projects, the query which is passed to the command contains placeholder for the refine project. This allows multiple execution of the defined query over projects with similar data structure.
The command has one limitation that comes from the GraphDB itself, it requires existence of a repository in order to use the SPARQL API, no matter that it uses refine project as data source. - Introduces a way to execute integration tests over secured GraphDB. The functionality is implemented in the
IntegrationTest
class, which spawns the GraphDB instance used for the tests. The mechanism allow so enable/disable the security on the fly by creating an refine client instance, which uses credentials and another that doesn't.
Changes
- Updated the GraphDB version for the integration tests to 10.0.0-M1 in order to take advantage of the new strategy for the product, which does not require licensing for the core functionalities of the product.
- Added repository via configuration file provisioning to the docker environment, for the integration tests. The name of the repository is
integration-tests
and it is created, when the GraphDB is initialized. - Renamed the
ExportRdfCommand
toDefaultExportRdfCommand
. This is a breaking change for implementations that refer to the concrete command class.
Bug fixes
- Added logic which allow usage of the RDF mapping JSON in different format in the export RDF and apply operations commands. It fixes usability issue related to the extraction of the RDF mapping from different places in the user interface in the OntoRefine or Mapping UI.
v1.4.0
Overview
The enhancements that the new release provides are mainly related to the security topic.
We've extended the creation of the refine client, allowing provisioning of credentials, which later to be used for the request execution in secured instance of OntoRefine.
New
- Enhanced the RefineClients to allow creation of different types of RefineClient instances. Now it can produce security aware client, which accepts credentials provider allowing to execute commands over secured Refine tools. Additionally there is an option, which allows full customization over the internal HTTP client that will be used by the RefineClient instance.
Changes
- Deprecated RefineClients#create method in favor of RefineClients#standard. Now that there are more methods in RefineClients, create doesn't seems appropriate as it doesn't provide context for the type of the produced client.
Bug fixes
- Fixed the method setOptions in ExportRowsCommand#Builder to follow the fluent pattern.
- Reverted the wrongly committed changes to the interface implementation of the RefineClient.
- Fixed an issue with the ExportRdfCommand request entity. If the initial request fails, it is retried due to the retry policy of the client. However the entity contains stream, which has been closed, which causes the retry to also fail without obvious reason. The simplest fix was to wrap the BasicHttpEntity in BufferedHttpEntity, which is always repeatable.
v1.3.0
Overview
The current release brings several improvements required by internal projects, where we are using the library. Also there are some optimizations and documentation updates.
New
- Removed the licensing notice from the Java classes. The reason for doing so is that the current version is distributed with general Apache License Version 2.0. Furthermore there were licensing notices for MIT, Apache, etc. in different classes throughout the library.
- Introduced enumeration for the engines that can be used for the export rows command. Updated the affect code to comply with the new type.
- Added property of type
Options
to theExportRowsCommand
, which allows provisioning of additional configuration for the export processes. Information on which are the available configurations for the options property may be found here. - Added new configuration class for the
ExportRowsCommand
calledAdditionalExportConfigs
. It will contain additional options for controlling different aspects of the export process. The reason for using different class instead ofOptions
is that the handling of these options will be implemented in the library, not in the refine tool itself. Currently there is only one option, which allows truncating of the last line in the result files after the export process is completed. It will be mainly used by*SV
exports to keep the correct rows count.
Changes
UploadOptions
is renamed to onlyOptions
. The intention behind the change is for the interface to become more abstract and to be used as general type for providing additional information to the different commands.- Moved the
ExportRowsCommand
in its own package in order to keep the structure of the project consistent. Updated the command to comply with the new definition of the commands. - Changed the object that is used for creation of the full endpoint address from
URL
toURI
, which can be passed directly to the request builders without the need of converting it toString
.