Z39.50

The final output from Z39.50 projects is a list of MARC control numbers against some other reference (e.g. a shelfmark). Each project also gives an option to add comments, which can be used to flag up any issues where chosen records don't match exactly.

So, the final results for Z39.50 tasks are stored alongside three keys:

  1. control_number
  2. reference
  3. comments

The values stored alongside these keys are determined first by an automated process, then, if further checking is required, by human intervention.

Automated analysis

When a task has recieved the required number of contributions it is marked as complete and the following results analysis process is triggered.

1. Check if all answers are empty.

This means that no users were able to find a suitable match and no comments were given. If this is the case, an empty value is stored against each answer key and the analysis process ends.

Example result fragment

If the process ends at this stage, the final result will be stored as below.

{
  "info": {
    "control_number": "",
    "reference": "",
    "comments": ""
  },
  "last_version": true
  ...
}

2. Check for any comments

A comment given alongside an answer will often signify that the result requires further checking. So, if a comment is found then the result's last_version flag is set to false, an empty value is stored against each answer key and the analysis process ends.

Example result fragment

If the process ends at this stage, the final result will be stored as below.

{
  "info": {
    "control_number": "",
    "reference": "",
    "comments": "Some comment"
  },
  "last_version": false
  ...
}

3. Check if the required match rate is met

If all answers were not empty, we check if a specified percentage of all answers match. That is, the control_number, reference and comments are exactly the same.

By default the required match rate is 60%. This equates to, for example, at least 2 out of 3, or 3 out of 5 answers being exactly the same. If the required match rate is met we store that matching answer as the final result and the analysis process ends.

Example result fragment

If the process ends at this stage, the final result will be stored as below.

{
  "info": {
    "control_number": "ocm00012345",
    "reference": "123.abc.4",
    "comments": ""
  },
  "last_version": true
  ...
}

4. Mark the result for further checking

If there are non-empty answers and the required match rate was not met then we mark the result for further checking by setting the last_version flag to false.

Example result fragment

If the process ends at this stage, the final result will be stored as below.

{
  "info": {
    "control_number": "",
    "reference": "",
    "comments": ""
  },
  "last_version": false
  ...
}