Skip to content

ediarum.WEB Version 2.1.1

Compare
Choose a tag to compare
@MartinFechner MartinFechner released this 08 May 16:41
· 33 commits to main since this release

May 2023

Welcome to the new major release of ediarum.WEB. Now, ediarum.WEB makes use of the native eXist-db indices which improves the backend performance. Due to this major change some code is rewritten and also the API endpoints and the manifest file appconf.xml must adapted to work with this new version. For more details see the release notes below.

Add index support for objects

Now the eXist-db index fields are used to retrieve objects information. For each object-type all filters and properties are added as index
fields. To see check the right usage of the index, please use the exist-db app Monex.

Attention: All object filters are now of type array of strings. If no value exists the is returned an empty array. Please update your usage of the API endpoints.
Attention: Label filter property is now an map of arrays. The values corresponding to an label are packed in a map entry. Please update your usage of the API endpoints.

The following index fields are defined:

  • object-type (e.g. objecttype---persons) as field has boolean value: Not every node of root must be an object. With an boolean xpath condition the valid nodes can be selected. Attention: In the appconf.xml the root element now only must contain a name. For selection a optional condition element can be added: e.g. <condition>./@type='my-object'</condition>
  • object-id (e.g. persons---id)
  • label (e.g. persons---label)
  • absolute-resource-id (e.g. persons---absolute-resource-id)
  • filter properties (e.g. persons---birthplace).
  • label filter properties (e.g. persons---label---alphabet) contains
    the properties values combined with the corresponding label (e.g. Mein Name---N)

Other changes:

  • Add parameter $with-filters option to edwebapi:get-object-list()
  • Remove unnecessary function edwebapi:get-object-list-without-filter
  • Remove limit parameter from edwebapi:get-object-list
  • Improve relations filter by moving api call outside from loop

Use index for relations

Also, the relations performance is improved with the usage of indices:

  • Remove $limit parameter
  • Add indices
  • Refactor function
  • Attention: Add condition tag to relation item in appconf
  • Use of @id-type with @filter added and documented
  • The suject-condition and object-condition must have the @type 'resource', 'id' or 'id-type' (the last on in combination with @filter) and contain X-Path-Expressions; for resource the expression remains empty. Attentation: conditions without @type with an XQuery-function (like function($this as map(*), $subject as map(*)) { $this?xml/@key = $subject?id }) are deprecated and aren't supported.

Update api cache mechanism

Some changes to the API cache mechanism are made:

  • Changes to the GET parameter cache
    • Set cache=no as default
    • With cache=off no ediarum-cache is used, results are directly generated from database evaluations
    • cache is now an optional parameter
  • Integrate caching into functions and delete function load-cache-from-map
    • Improve cache performance
    • A unspecified error was caused by apply. At the first
      apply everything went fine, but a following apply caused an
      unspecified error.
  • Cache files are now saved as .json and not as .xml
    • Change map values to json compatible Attention: At windows hosts there may be an encoding error if the file.encoding java parameter isn't set to UTF-8
    • Only use parse-json if used
  • Add error message if cache is locked
  • Remove blocking cache for 1 minute

Minor changes

  • Integrate cache, refactor and bugfix edwebapi:get-all function
  • Add distance search: with type distance only first match is shown; with distance-all-matches perfomance is slower but all matches are shown.
  • Add order-modifier to object-list

Update documentation

  • Update appconf documentation
  • Add CITATION.cff
  • Change zenodo badge to link to latest release