NAME

koha-ark - Manage ARK identifiers in a Koha Catalog

VERSION

version 1.1.2

DESCRIPTION

Process biblio records from a Koha Catalog in order to update its ARK identifiers. See The ARK Identifier Scheme. The processing is driven by ARK_CONF Koha system preference. It's a json variable. For example:

{
  "ark": {
    "NMHA": "myspecial.institution.fr",
    "NAAN": "12345",
    "ARK": "http://{NMHA}/ark:/{NAAN}/catalog{id}",
    "koha": {
      "id": { "tag": "099", "letter": "a" },
      "ark": { "tag": "003" }
    }
  }
}

ARK_CONF system preference must contains several elements:

  • NMHA - Name Mapping Authority Hostport. Usually it's a hostname, the hostname of the Koha system itself, or the hostname of a proxy server (or link resolver).

  • NAAN - Name Assigning Authority Number. It's a number identifying the institution, ie the Library using Koha. This number is provided for example by the California Digital Library (CDL),

  • ARK - It's a template used to build the ARK. Three placeholders can be used in the template: NMHA and NAAN from ARK_CONF, and id (Koha biblio record unique identifier extracted from koha.id field).

  • koha.id - The biblio record field which contains Koha unique id (biblionumber or another id). Contains 2 variables: tag and letter, si it could be a control or a standard field. For example, {"tag": "001"} or {"tag": "099", "letter": "a"}.

  • koha.ark - The biblio record field used to store the ARK. It could be a control or standard field. That's this field in which this script will store the generated field. This is also the field that this script can clear entirely.

There are four commands: check, clear, update, and fix

check

Process all biblio records, and check them for: bad ARK, correct ARK in the wrong field, bad ARK in the correct field.

clear

koha-ark clear clears the ARK field (koha.ark variable) in all biblio records of the Catalog.

update

koha-ark update processes all biblio that have an empty ARK field. The ARK field is created with the appropriate ARK identifier. The ARK is build based on ARK variable from ARK_CONF. For the above ARK_CONF, the biblio record that has 9877 biblionumber will have this in 003 field:

http://myspecial.institution.fr/ark:/12345/biblio9877

fix

Verify that the correct ARK is present in the correct ARK field. All biblio records are scanned. If an invalid ARK is found, it's fixed (with --doit).

USAGE

koha-ark check|clear|update [--doit] [--verbose] [--debug] [--help]

SYNOPSYS

koha-ark clear --doit
koha-ark update --noverbose --doit
koha-ark update --debug
koha-ark check
koha-ark check --where "biblionumber BETWEEN 1000 AND 2000"
koha-ark fix

PARAMETERS

--where

WHERE clause of the SELECT biblio_metadata used to retrieved biblio records from biblio_metadata table. For example: biblionumber BETWEEN 100 AND 200 or ExtractValue(metdatata, '//datafield[tag=099]/subfield[@code="a"]'='a').

--doit

Without this parameter biblio records are not modified in Koha Catalog.

--verbose

Enable script verbose mode. Verbose by default. --noverbose disable verbosity. In verbose mode, a progress bar is displayed.

--debug

Info about processing is sent to a file named 'koha-ark.json' in the current directory. In 'debug' mode, more information is produced.

--help|-h

Print this help page.

RESULT

The result of this script is a JSON file koha-ark.log which reports what has been done.

For exemple, if ARK_CONF is missing, the file will report the issue:

{
  "action" : "check"
  "timestamp" : "\"2018-05-11 16:02:15\"",
  "error" : {
     "err_pref_missing" : {
        "msg" : "ARK_CONF preference is missing",
        "id" : "err_pref_missing"
     }
  },
}

koha-ark clear contains something like this:

{
  "timestamp" : "2018-05-11 17:18:42",
  "action" : "clear",
  "result" : {
     "count" : "1569",
     "records" : [
        {
           "biblionumber" : "1",
           "what" : {
              "clear" : {
                 "id" : "clear",
                 "msg" : "Clear ARK field"
              }
           }
        },
        ...
  }
}

koha-ark update --debug contains something like this:

{
  "timestamp" : "2018-05-11 17:21:02",
  "action" : "update",
  "testmode": 1,
  "result" : {
     "count" : "145282",
     "records" : [
        {         
           "biblionumber" : "1570",
           "what" : {
              "generated" : {
                 "id" : "generated"
                 "msg" : "ARK generated",
                 "more" : "http://myspecial.institution.fr/ark:/12345/catalog1573",
              },
              "add" : {
                 "id" : "add",
                 "msg" : "Add ARK field"
              }
           },
           "record": [ ... ],
           "after": [ ... ]
        },
        ...
     ]
  }
}

AUTHOR

Frédéric Demians <f.demians@tamil.fr>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Fréderic Demians.

This is free software, licensed under:

The GNU General Public License, Version 3, June 2007