Releases: kit-data-manager/ro-crate-java
v2.1.0-rc2
Highlights 🚀
While we avoid breaking the API except for major versions, you may notice that you may need to do some little changes this time. This is because of fixes which inherently required this. But the fix on your side should be easy. In most cases you'll need to catch a possible exception when reading or writing crates and it should work again. Please tell us soon if something does not work for you!
- Support .ELN-style crates in all zip readers and writers by @Pfeil in #258
- 📓We now support zip files which contain the crate not directly, but have a subfolder instead. This is one of the properties of the .ELN specification.
- 🤐 Our Zip (and ZipStream) reader will search for this implicitly, so nothing has to be changed from your side to make it work. For readers, we think this makes reading simply more reliable. Note that we do not search the whole zip file for a crate but just in the first hierarchy of subfolders. We expect only one subfolder, but to work with edge cases, ro-crate-java will consider a few more. This works around hidden thumbnail folders and other unexpected properties.
- ✍🏼 Our Zip (and ZipStream) writer strategies have according configuration methods to make them create such files:
usingElnStyle()
andwithRootSubdirectory()
do the exact same thing, just with different naming. Some may search for ELN functionality, others just want a subfolder. Forro-crate-java
this is currently the same thing.
- Make specification examples (from readme) executable by @Pfeil in #256
- 📄✅ Some of the examples in our guide did not work properly any more. To avoid this in future, we moved them to unit tests, where they are executable and tested. The readme now points to these examples.
- 🔧 Note, we also fixed a few bugs (see below). See if you are affected and consider updating to the release candidate to validate the fixes! 💛
Other
- chore(deps): update jacksonversion to v2.19.0 by @renovate in #248
- chore(deps): update dependency gradle to v8.14 by @renovate in #250
- chore(deps): update dependency gg.jte:jte to v3.2.1 by @renovate in #249
- Fix adding id property duplicates by @Pfeil in #257
- fix: enforce correct subfolder name for additional files in StaticPreview.saveAllToStream by @Pfeil in #261
- Next Version (v2.1.0-rc2) by @Pfeil in #255
Full Changelog: v2.1.0-rc1...v2.1.0-rc2
v2.1.0-rc1
Highlights
These highlights are the reason for the release candidate. Please give feedback if you experience something unexpected (and also if it works fine for you, if you like). Thanks!
Generalize reading and writing crates by @Pfeil (based on the work of @ThomasJejkal) in #247
We deprecated the old interfaces in favour of newer, generic ones. You are now able to implement readers which read/write from/to any type of location/destination. As an example, we also provide a ZipStreamReader (and Writer) which targets streams, so you do not need to store your crate on disk before sending it around!
We noticed there was a bug in the Zip export of DataSetEntity if you set an ID different to the file's filename. If this makes you feel you might have been affected, have a look at #254. It is now fixed, and all Writers are tested for correctness (not only the folder writer) in the same way.
All Changes
- Point to latest release in README by @fpotier in #234
- chore(deps): update dependency com.github.fslev:json-compare to v7 by @renovate in #236
- chore(deps): update plugin io.freefair.maven-publish-java to v8.13.1 by @renovate in #235
- chore(deps): update dependency font-awesome to v6 by @renovate in #239
- chore(deps): update dependency font-awesome to v6 by @renovate in #240
- chore(deps): update dependency org.junit:junit-bom to v5.12.2 by @renovate in #243
- chore(deps): update dependency commons-io:commons-io to v2.19.0 by @renovate in #244
- Fix #241: Getting key value pairs from the context by @Pfeil in #245
- Generalize reading and writing crates by @Pfeil (based on the work of @ThomasJejkal) in #247
- Fix renaming of data set entities by @Pfeil in #253
- Version 2.1.0 by @Pfeil in #233
Full Changelog: v2.0.2...v2.1.0-rc1
v2.0.2
This is a maintenance and bugfix release.
A big thank you to @fpotier for reporting issues and contributing to the code!
Fixes
- Fix
addEntities()
andaddFromCollection()
generic parameter by @fpotier in #225 - Fix #226 allow arrays of literals as property values by @Pfeil in #231
Dependencies
- chore(deps): update dependency jacoco to v0.8.12 by @renovate in #202
- chore(deps): update dependency gradle to v8.10.2 by @renovate in #203
- chore(deps): update dependency gradle to v8.11 by @renovate in #205
- chore(deps): update plugin io.freefair.maven-publish-java to v8.11 by @renovate in #207
- chore(deps): update dependency commons-io:commons-io to v2.18.0 by @renovate in #209
- chore(deps): update dependency gradle to v8.11.1 by @renovate in #208
- chore(deps): update dependency com.networknt:json-schema-validator to v1.5.4 by @renovate in #210
- chore(deps): update jacksonversion to v2.18.2 by @renovate in #211
- chore(deps): update dependency gradle to v8.12 by @renovate in #213
- chore(deps): update dependency org.junit:junit-bom to v5.11.4 by @renovate in #212
- chore(deps): update plugin net.researchgate.release to v3.1.0 by @renovate in #214
- chore(deps): update dependency com.networknt:json-schema-validator to v1.5.5 by @renovate in #217
- chore(deps): update dependency org.slf4j:slf4j-jdk14 to v2.0.17 by @renovate in #224
- chore(deps): update dependency org.junit:junit-bom to v5.12.0 by @renovate in #223
- chore(deps): update dependency com.networknt:json-schema-validator to v1.5.6 by @renovate in #222
- chore(deps): update dependency com.apicatalog:titanium-json-ld to v1.5.0 by @renovate in #220
- chore(deps): update dependency gradle to v8.13 by @renovate in #219
- chore(deps): update plugin io.freefair.maven-publish-java to v8.12.2 by @renovate in #218
- chore(deps): update dependency org.junit:junit-bom to v5.12.1 by @renovate in #232
- chore(deps): update jacksonversion to v2.18.3 by @renovate in #227
- chore(deps): update plugin io.freefair.maven-publish-java to v8.13 by @renovate in #228
- chore(deps): update dependency com.apicatalog:titanium-json-ld to v1.6.0 by @renovate in #229
- PR for v2.0.2 by @ThomasJejkal in #204
New Contributors
- @renovate made their first contribution in #202
- @fpotier made their first contribution in #225
- @ThomasJejkal made their first contribution in #204
Full Changelog: v2.0.1...v2.0.2
v2.0.1
Maintenance release.
What's Changed
- build(deps): bump com.networknt:json-schema-validator from 1.5.1 to 1.5.2 by @dependabot in #192
- build(deps): bump commons-io:commons-io from 2.16.1 to 2.17.0 by @dependabot in #191
- build(deps): bump com.github.fslev:json-compare from 6.15 to 6.16 by @dependabot in #190
- build(deps): bump org.junit:junit-bom from 5.11.0 to 5.11.1 by @dependabot in #195
- build(deps): bump com.github.fslev:json-compare from 6.16 to 6.18 by @dependabot in #193
- build(deps): bump jacksonVersion from 2.17.2 to 2.18.0 by @dependabot in #194
- build(deps): bump io.freefair.maven-publish-java from 8.10 to 8.10.2 by @dependabot in #196
- build(deps): bump org.junit:junit-bom from 5.11.1 to 5.11.2 by @dependabot in #197
- fix: adjust expected data to changed external data by @Pfeil in #201
- build(deps): bump com.networknt:json-schema-validator from 1.5.2 to 1.5.3 by @dependabot in #200
- build(deps): bump jacksonVersion from 2.18.0 to 2.18.1 by @dependabot in #199
- build(deps): bump org.junit:junit-bom from 5.11.2 to 5.11.3 by @dependabot in #198
Full Changelog: v2.0.0...v2.0.1
v2.0.0
With this major release, it will be easier to describe your data in some cases. The integration of ro-crate-java into your application will be easier if you use the ZipReader. Some APIs have slightly changed in order to avoid the accidental creation of invalid crates in some cases. All known bugs are now fixed and everything complies, to our knowledge, to the specification. Here are some changes we want to highlight in order to help with migration. Please refer to the Javadoc for details.
Highlights 🚀
The ZipReader is now customizable
The ZipReader unpacks the zip file into a temporary folder in order to access the files inside. This folder is, by default, located in the location where the application using ro-crate-java runs in. This can now be customized using a new ZipReader constructor. The default path also changed slightly in order to avoid collisions.
By default, the temporary folders are being removed if the Java Virtual Machine stops running. If you have a long-running application or want to manage space manually, you can now get all information to do this using getter-Methods within the ZipReader class.
Take a look into the ZipReader documentation for details.
Avoid false-positive warnings if a term is not defined in the context
We do now support full URIs which do not need to be defined in the context, as well as the @id
and @json
values for the @type
attribute. This way you should in practice get less warnings which you could have ignored anyway.
Detect all data entities as such
When adding a data entity using ro-crate-java, we implicitly connect it to the root data entity using the hasPart
property. It is up to the user to make more connections, but this is one we currently enforce, to ensure this is recognized as a data entity. If you have the need to handle this differently, please open an issue. When reading crates, we made the same assumption: that the crate will have all data entities in the hasPart
property. In practice, this may not be the case. We now traverse the graph consisting of hasPart
(and isPartOf
) properties in order to find all data entities. When you now use crate.getAllDataEntities()
and crate.getAllContextEntities()
, you may get slightly different (meaning correct) results.
Encoded file paths now work as defined in the specification
We now support encoded file paths and encode them for you without any additional line of code on your side. We used the examples from the specification to ensure maintaining readability, if possible, and only fully encode when all our heuristics did not work out. This will usually keep most characters readable, like Kanji and others.
Easier provenance descriptions using the ActionEntityBuilder
We now provide an ActionEntityBuilder in order to make it easy to describe the provenance of your data.
Transition guide: renamed addContent
to setLocation
The function addContent
for data entities has been modified and renamed. The new name is setLocation
and setLocationWithExceptions
:
- The "set" prefix implies that calling the function a second time will override the first call.
- The "Location" instead of "Content" reflects that the input is a pointer to the content location.
- The function takes only one parameter, which is the location. The
id
parameter has been dropped. If no ID is present in beforehand, it will be derived from the file name within the given path. If not, it remains unchanged. See the documentation for details. To set the ID explicitly before or after the call, you can usesetId
as before. This change was to remove redundant functionality.
If you have any feedback for this or other changes, feel free to open an issue.
What's Changed
- fix: RootDataEntity identifier is not allowed for other entities. by @Pfeil in #185
- Fix handling of possible loops in data graphs by @Pfeil in #187
- Fix invalid context check warnings by @Pfeil in #188
- Unpack zipped crates into unique temporary folder by @Code42Cate in #83
Full Changelog (since v2.0.0-rc4): v2.0.0-rc4...v2.0.0
Full Changelog (since v1.1.0): v1.1.0...v2.0.0
v2.0.0-rc4
Another small set of breaking changes. Please try it out and crate an issue if it works for you.
What's Changed
⚡ Highlights
- More ergonomic and consistent ActionEntityBuilder by @Pfeil in #178
- Avoid the use of lists in APIs and replace them with appropriate interfaces. by @Pfeil in #183
- Avoid adding dataEntities which are not being added to the root data entity by @Pfeil in #184
🛠️ Maintenance
- build(deps): bump com.networknt:json-schema-validator from 1.1.0 to 1.5.1 by @dependabot in #165
- build(deps): bump gradle/wrapper-validation-action from 1 to 3 by @dependabot in #166
- build(deps): bump jacksonVersion from 2.16.1 to 2.17.2 by @dependabot in #167
- build(deps): bump com.apicatalog:titanium-json-ld from 1.3.3 to 1.4.1 by @dependabot in #168
- build(deps): bump org.slf4j:slf4j-jdk14 from 2.0.9 to 2.0.13 by @dependabot in #169
- build(deps): bump org.junit:junit-bom from 5.9.1 to 5.10.3 by @dependabot in #170
- build(deps): bump gradle/gradle-build-action from 2 to 3 by @dependabot in #149
- build(deps): bump com.github.fslev:json-compare from 6.13 to 6.15 by @dependabot in #175
- build(deps): bump gradle/actions from 3 to 4 by @dependabot in #176
- build(deps): bump org.junit.jupiter:junit-jupiter-params from 5.0.0-M4 to 5.11.0-RC1 by @dependabot in #172
- build(deps): bump commons-validator:commons-validator from 1.8.0 to 1.9.0 by @dependabot in #173
- build(deps): bump commons-io:commons-io from 2.15.1 to 2.16.1 by @dependabot in #174
- Review identifier encoding by @Pfeil in #171
- build(deps): bump io.freefair.maven-publish-java from 8.6 to 8.7.1 by @dependabot in #180
- build(deps): bump org.junit:junit-bom from 5.10.3 to 5.11.0 by @dependabot in #181
- build(deps): bump org.slf4j:slf4j-jdk14 from 2.0.13 to 2.0.16 by @dependabot in #179
- build(deps): bump io.freefair.maven-publish-java from 8.7.1 to 8.10 by @dependabot in #182
Full Changelog: v2.0.0-rc3...v2.0.0-rc4
v2.0.0-rc3
Highlight 🚀
This release contains some fixes.
What's Changed
- Fix in ZIP Reader
v2.0.0-rc2
Highlight 🚀
This release contains some fixes. Refactoring is also done.
What's Changed
- Fix #6 : both properties license and datePublish are added to the root data entity
- Fix #5 : encoding and decoding of file paths are fixed.
- setId() and setSource() methods are no more available. The new method addContent() is implemented to add content (files, directories, urls,..) to a data entity.
- Appropriate tests are fixed
- Added support for provenance entities
- Added removeProperty functionality
v2.0.0-rc1
Highlight 🚀
This release contains some fixes. Refactoring is also done.
What's Changed
- Fix #4 : both properties license and datePublish are added to the root data entity
- Fix #5 : encoding and decoding of file paths are fixed.
- setId() and setSource() methods are no more available. The new method addContent() is implemented to add content (files, directories, urls,..) to a data entity.
- Appropriate tests are fixed.
v1.1.0
Highlight 🚀
This release is the stabilization of the release candidate, where we added an initial support for a feature of the 1.2-DRAFT specification of RO-Crate. It allows adding further profiles / specifications to the crate and reading/writing crates using this feature already.
While reading works basically like before, there is a new builder for functionalities which are not in a released specification yet, called the RoCrate.BuilderWithDraftFeatures
. If you use a feature of 1.2-DRAFT, the version will be set internally accordingly. Besides this, everything should work as before, as our test coverage should ensure.
What's Changed
- Fix #105: "multiple conformsTo values" by @Pfeil in #111
- build(deps): bump com.networknt:json-schema-validator from 1.0.84 to 1.0.85 by @dependabot in #120
- build(deps): bump com.networknt:json-schema-validator from 1.0.85 to 1.0.86 by @dependabot in #121
- build(deps): bump org.junit:junit-bom from 5.9.3 to 5.10.0 by @dependabot in #123
Full Changelog: v1.0.7...v1.1.0