{"id":19640698,"url":"https://github.com/daniel-km/omeka-plugin-arkandnoid","last_synced_at":"2025-04-28T12:30:41.566Z","repository":{"id":30682797,"uuid":"34238676","full_name":"Daniel-KM/Omeka-plugin-ArkAndNoid","owner":"Daniel-KM","description":"Ark \u0026 Noid is a plugin for Omeka that creates and manages Ark and Noid identifiers (short, opaque, meaningless, universal, unique and persistent ids for any records), that can replace the default cool URIs of each record.","archived":false,"fork":false,"pushed_at":"2023-09-30T14:44:10.000Z","size":269,"stargazers_count":6,"open_issues_count":1,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-05-14T00:05:22.760Z","etag":null,"topics":["ark","ark-identifiers","identifier","noid","omeka","omeka-plugin","opaque-identifiers"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Daniel-KM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-20T04:52:01.000Z","updated_at":"2024-05-14T00:05:22.761Z","dependencies_parsed_at":"2022-09-15T01:53:29.570Z","dependency_job_id":null,"html_url":"https://github.com/Daniel-KM/Omeka-plugin-ArkAndNoid","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-plugin-ArkAndNoid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-plugin-ArkAndNoid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-plugin-ArkAndNoid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-plugin-ArkAndNoid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Daniel-KM","download_url":"https://codeload.github.com/Daniel-KM/Omeka-plugin-ArkAndNoid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224115850,"owners_count":17258238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ark","ark-identifiers","identifier","noid","omeka","omeka-plugin","opaque-identifiers"],"created_at":"2024-11-11T14:06:28.747Z","updated_at":"2024-11-11T14:06:29.459Z","avatar_url":"https://github.com/Daniel-KM.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Ark \u0026 Noid (plugin for Omeka)\n=============================\n\n[Ark \u0026 Noid] is a plugin for [Omeka] that creates and manages [ark identifiers],\nthat can replace the default [cool URIs] of each record, that corresponds to the\nsimple number of a row in a table of the database.\n\nArks are short, opaque, meaningless, universal, unique and persistent ids for\nany records. The acronym \"ark\" means \"Archival Resource Key\". This is a\nreference to the Noah’s ark (digital documents will have a long life) and to the\nworld of archives (Omeka can be an institutional archive) too. Optionally, the\nidentifiers can be resolved via a service as [N2T], the Name-to-Thing Resolver.\n\nArks may be built with the utility [Noid], that creates nice opaque identifiers,\nthat is integrated too via the library [Noid4Php].\n\nSee a living example in the [Bibliothèque patrimoniale] of [Mines ParisTech]\n(click on \"Notice\" to display the record of any document).\n\nIf you don’t have an authority number, the plugin will create a non standard\nark, but nevertheless a unique and opaque identifier that can be managed.\n\n\nPresentation of Ark\n-------------------\n\nA full ark looks like (official example):\n\n```\n    http://example.org/ark:/12025/654xz321/s3/f8.05v.tiff\n    \\________________/ \\__/ \\___/ \\______/ \\____________/\n      (replaceable)     |     |      |       Qualifier\n           |       ARK Label  |      |    (NMA-supported)\n           |                  |      |\n Name Mapping Authority       |    Name (NAA-assigned)\n          (NMA)               |\n                   Name Assigning Authority Number (NAAN)\n```\n\nIn Omeka, by default, the ark of an item looks like:\n\n    http://example.org/ark:/12025/b6KN\n\nThe \"12025\" is the id of the institution, that is assigned for free by the\n[California Digital Library] to any institution with historical or archival\npurposes. The \"b6KN\" is the short hash of the id, with a control key. The name\nis always short, because four characters are enough to create more than ten\nmillions of unique names.\n\nIn the Ark format, a slash \"/\" means a sub-resource or a hierarchy and a dot\n\".\" means a variant, so each file gets its ark via the qualifier part (its order\nby default, but the original filename or the Omeka hash can be used):\n\n    http://example.org/ark:/12345/b6KN/2\n\nArks for derivatives files are represented as:\n\n    http://example.org/ark:/12345/b6KN/2.original\n    http://example.org/ark:/12345/b6KN/2.fullsize\n    http://example.org/ark:/12345/b6KN/2.square_thumbnail\n    http://example.org/ark:/12345/b6KN/2.thumbnail\n\nCurrently, the links to physical files are created via the standard function\nrecord_url() and the type of derivative, as `record_url($file, 'original')`:\n\nThe format of the name can be customized with a prefix (recommended), a suffix\nand a control key (recommended too). The qualifier part is not required to be\nopaque. Advanced schemas can be added via the filters \"ark_format_names\" and\n\"ark_format_qualifiers\", associated classes and routes.\n\nSo the name can be obtained too from another tool used to create and manage\narks, like [NOID], a generator of \"nice opaque identifiers\". This is useful too\nif other unique ids or permanent urls are already created via free or commercial\nsystems [PURL], [DOI], [Handle], etc. (see the full [CDL example]):\n\n```\n    http://OwlBike.example.org/ark:/13030/tqb3kh97gh8w   \u003c----  Example Key\n                                doi:10.30/tqb3kh97gh8w         with parallel\n                                hdl:13030/tqb3kh97gh8w        parts in other\n                                urn:13030:tqb3kh97gh8w          id schemes.\n```\n\nFor more informations about persistent identifiers, see this [overview]. The\nfull [specification] of ark can be checked too.\n\n\nAll arks are saved as Dublin Core Identifier, as recommended. This allows to\nmake a check to avoid duplicates, that are forbidden. This applies to collection\nand items. For files, the qualifier part is managed dynamically.\n\nThe policy is available at \"http://example.org/ark/policy\" and \"http://example.org/ark:/12345/policy\".\n\nArk can be displayed by default instead of the default internal ids. This plugin\nis fully compatible with [Clean Url]: an ark can be used for machine purposes\nand a clean url for true humans and for the natural referencement by search\nengines.\n\n\nPresentation of Noid\n--------------------\n\n[NOID] allows to create nice opaque identifier, to bind it to an object (the\nurl here), and to manage them in the long term. Only the template is explained\nhere.\n\n- A template is formed by :\n    - a prefix that defines a subset, a list of ark minted by a subpart of an\n    organization, or a specific set (may be empty, or commonly 1 to 5 characters).\n    - a `.`,\n    - a mode: `s` for sequential, `z` for unlimited sequential, or `r` for random,\n    - a mask: composed from one or more of these character repertoires: `d`, `e`,\n    `i`, `x`, `v`, `E`, `w` `c` and `l` (see below).\n    - and finally a `k` (key for control), if wanted.\n\n- The character repertoires are:\n    - Standard:\n        - `d`: `{ 0-9 x }` cardinality 10\n        - `e`: `{ 1-9 b-z }` - `{l, vowels}` cardinality 29\n    - Proposed:\n        - `i`: `{ 0-9 x }` cardinality 11\n        - `x`: `{ 0-9 a-f _ }` cardinality 17\n        - `v`: `{ 0-9 a-z _ }` cardinality 37\n        - `E`: `{ 1-9 b-z B-Z }` - `{l, vowels}` cardinality 47\n        - `w`: `{ 0-9 a-z A-Z # * + @ _ }` cardinality 67\n    - Proposed, but not accepted for Ark:\n        - `c`: Visible ASCII - `{ % - . / \\ }` cardinality 89\n    - Not proposed in the Perl script, but compatible with Ark and useful\n    because the longest with only alphanumeric characters:\n        - `l`: `{ 0-9 a-z A-Z }` - `{ l }` cardinality 61\n\nThe prime cardinality allows to set an efficient check character (`k`) against\na single-character error and a transposition of two single characters.\n\nSo, a template like `a.rlllk` allows to create a fixed-size noid for 226981\nrecords and the template `b.rllllk` allows to create 13845841 noids: large\nenough in most cases.\n\nThe default template in Omeka is `.zek`: unlimited number of sequential names,\nwith a control key, like `12345/92` and `12345/bkp6` for the NAAN `12345`.\n\nSee other [templates] for more explanation and examples.\n\n\nInstallation\n------------\n\nUncompress files and rename plugin folder \"Ark\".\n\nThen install it like any other Omeka plugin and follow the config instructions.\n\n### Notes\n\nWith the format \"Omeka Id\",  the php extension \"BCMath\" must be enabled. This is\nthe case on the majority of the servers (based on Debian or Windows), else\ninstall the  module \"php-bcmath\", or don’t use this format.\n\nWith the format \"Noid for php\", the plugin requires the php extension \"dba\",\nthat uses to be installed by default with Php, and the BerkeleyDB library, that\nis installed by default too on standard web servers and any Linux distribution\n(package libdb5.3 on Debian), because it is used in many basic tools.\n\n### Perl and php\n\nThe output of perl (release 5.20 and greater) and php (before and since release\n7.1, where the output of `rand()` and `srand()` were [fixed] in the php\nalgorithm), are the same for integers at least until 32 bits (perl limit, namely\nmore than 4 000 000 000 identifiers).\n\nAnyway, it is recommended to use php 7.1 or higher, since previous versions of\nphp are no more supported.\n\n### Automatic test\n\nFor testing and debugging, phpunit 5.7 is required. If you don’t have it:\n\n```\ncd tests\nwget https://phar.phpunit.de/phpunit-5.7.phar\nphp phpunit-5.7.phar\n```\n\n\nUsage\n-----\n\nArk ids are automatically added as identifiers when a collection or an item is\nsaved.\n\nBecause an ark should be persistent, if an ark exists already, it will never be\nremoved or modified automatically. Nevertheless, if it is removed, a new one\nwill be created according to the specified scheme. Note that the default\ninternal format create unique ids based on the Omeka id, so the same is created\nif the parameters are the same.\n\nTo set arks to existing records, simply select them in admin/items/browse and\nbatch edit them, without any change.\n\nYou can run the command line tool too:\n```\nphp -f plugins/Ark/create_arks.php\n```\n\n**IMPORTANT**\n\nEven if a check is done after creation of an ark to avoid any duplicate, it’s\nnot recommended to change parameters once records are public in order to keep\nthe consistency and the sustainability of the archive.\n\n\nTODO\n----\n\n- Manage the policy statement by item.\n- Let the choice to link ark to the file and/or to the record.\n\n\nWarning\n-------\n\nUse it at your own risk.\n\nIt’s always recommended to backup your files and your databases and to check\nyour archives regularly so you can roll back if needed.\n\nDon't forget to save the noid database, located in `/files/arkandnoid` by\ndefault.\n\n\nTroubleshooting\n---------------\n\nSee online issues on the [plugin issues] page on GitHub.\n\n\nLicense\n-------\n\nThis plugin is published under the [CeCILL v2.1] licence, compatible with\n[GNU/GPL] and approved by [FSF] and [OSI].\n\nIn consideration of access to the source code and the rights to copy, modify and\nredistribute granted by the license, users are provided only with a limited\nwarranty and the software’s author, the holder of the economic rights, and the\nsuccessive licensors only have limited liability.\n\nIn this respect, the risks associated with loading, using, modifying and/or\ndeveloping or reproducing the software by the user are brought to the user’s\nattention, given its Free Software status, which may make it complicated to use,\nwith the result that its use is reserved for developers and experienced\nprofessionals having in-depth computer knowledge. Users are therefore encouraged\nto load and test the suitability of the software as regards their requirements\nin conditions enabling the security of their systems and/or data to be ensured\nand, more generally, to use and operate it in the same conditions of security.\nThis Agreement may be freely reproduced and published, provided it is not\naltered, and that no provisions are either added or removed herefrom.\n\nThe original Noid utility was published under BSD. The php version is published\nunder [CeCILL-B v1], compatible with BSD. See [Noid4Php] for further details.\n\n\nContact\n-------\n\nCurrent maintainers:\n\n* Daniel Berthereau (see [Daniel-KM] on GitHub)\n\nSecond version of this plugin has been built for [Mines ParisTech].\n\n\nCopyright\n---------\n\n* Copyright Daniel Berthereau, 2015-2018\n\n\n[Ark \u0026 Noid]: https://github.com/Daniel-KM/Omeka-plugin-ArkAndNoid\n[Omeka]: https://omeka.org\n[ark identifiers]: https://confluence.ucop.edu/display/Curation/ARK\n[Cool URIs]: https://www.w3.org/TR/cooluris\n[N2T]: http://n2t.org\n[Noid]: https://wiki.ucop.edu/display/Curation/NOID\n[Noid4Php]: https://github.com/Daniel-KM/Noid4Php\n[Bibliothèque patrimoniale]: https://patrimoine.mines-paristech.fr\n[Mines ParisTech]: http://mines-paristech.fr\n[California Digital Library]: http://www.cdlib.org\n[NOID]: https://metacpan.org/pod/distribution/Noid/noid\n[PURL]: https://purl.org\n[DOI]: http://www.doi.org\n[Handle]: http://handle.net\n[CDL example]: https://ezid.cdlib.org/learn/id_concepts\n[overview]: http://www.metadaten-twr.org/2010/10/13/persistent-identifiers-an-overview\n[specification]: https://wiki.ucop.edu/download/attachments/16744455/arkspec.pdf?version=1\u0026modificationDate=1440538826000\u0026api=v2\n[Clean Url]: https://github.com/Daniel-KM/Omeka-plugin-CleanUrl\n[templates]: https://metacpan.org/pod/distribution/Noid/noid#TEMPLATES\n[fixed]: https://secure.php.net/manual/en/migration71.incompatible.php#migration71.incompatible.fixes-to-mt_rand-algorithm\n[plugin issues]: https://github.com/Daniel-KM/Omeka-plugin-ArkAndNoid/issues\n[CeCILL v2.1]: https://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html\n[GNU/GPL]: https://www.gnu.org/licenses/gpl-3.0.html\n[FSF]: https://www.fsf.org\n[OSI]: http://opensource.org\n[CeCILL-B v1]: https://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt\n[Daniel-KM]: https://github.com/Daniel-KM \"Daniel Berthereau\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-km%2Fomeka-plugin-arkandnoid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaniel-km%2Fomeka-plugin-arkandnoid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-km%2Fomeka-plugin-arkandnoid/lists"}