rguezque/ark-generator

Sencillo generador de identificadores ARK

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/rguezque/ark-generator

v1.0.0 2025-11-29 23:21 UTC

This package is auto-updated.

Last update: 2025-11-29 23:23:00 UTC


README

Un sencillo generador de identificadores ARK (Archival Resource Key). También puede utilizarse para generar identificadores DOI, URN o Handle.

Generar un identificador ARK

Para empezar crea una instancia de la clase Generator la cual recibe dos argumentos:

  • El número NAAN. Un identificador único asignado por ARK Alliance.
  • El esquema del identificador. En este caso por default es ark; sin embargo tambien puede especificarse como doi, urn o hdl (Handle)

Después ejecuta el método ArkGenerator::generate el cual recibe dos argumentos:

  • Un shoulder. Es un string que sirve a su vez como cabecera del prefijo a generar. El usuario lo define.
  • Una máscara. Es una cadena betanumérica que le dice al generador como formar el blade (Que se agrega al final del shoulder).

Juntos forman el sufijo del ark.

// index.php
declare(strict_types = 1);

use rguezque\ArkGenerator\ArkGenerator;

require __DIR__.'/vendor/autoload.php';

$gen = new ArkGenerator('68066');
$result = $gen->generate('p3  ', 'cbbbddck');

echo print_r($result, true);

Ejecuta desde la terminal:

php ./index.php

Esto devolvera un array con los datos resultantes, en una estructura como la siguiente:

[
    'scheme' => 'ark',
    'prefix' => '68066',
    'bow' => 'ark:68066',
    'shoulder' => 'p3',
    'blade' => 'f8j491xk',
    'suffix' => 'p3f8j491xk',
    'identifier' => '68066/p3f8j491xk',
    'full_scheme' => 'ark:68066/p3f8j491xk',
    'created_at' => '1763060594'
];

Si se prefiere definir un blade explicitamente por el usuario, utiliza el método ArkGenerator::setBlade antes de invocar ArkGenerator::generate. Restablece el blade a null con ArkGenerator::resetShoulderPrefix.

Note

Evita utilizar el NAAN 99999, y el shoulder fk, ya que son considerados por lo regular como identificadores de prueba. Si el shoulder contiene guiones (-) estos serán ignorados. Ej. x3-k se convertirá a x3k. Por convención de ARK, todo se generará en minúsculas.

Acerca de la mascara para generar los sufijos

Al momento de generar un sufijo, el método ArkGenerator::generate necesita un string que sirve como una mascara que permite definir como se formara el sufijo del ARK; a continuación el significado de cada caracter o flag que puede formar una mascara:

  • d: Genera un número entero entre el 0 y el 9.
  • c: Genera una letra del alfabeto consonántico omitiendo la letra l (ele) para evitar confusiones con el número 1 (bcdfghjkmnpqrstvwxyz).
  • b: Genera un caracter betanúmerico (bcdfghjkmnpqrstvwxz0123456789).
  • s: Genera un caracter especial (=~*+@_$). Se omite : y / porque están reservados por el resolutor (resolver).

Las flags con case-sensitive y cualquier otra letra que no sea una flag, se asignará directamente al prefijo resultante en el orden en que haya sido definida.

Documentación adicional

Sobre el esquema del identificador ARK

Sobre el esquema DOI