JATS-0048-003

Rule Overview

Message

CRediT contributor role "." should have consistent vocab-term, vocab-term-identifier, and text values from the CRediT taxonomy.$suggestion

Rule XPath:

This rule ASSERTS the following, raising an alert if FALSE:

let $credit-roles := <contrib> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/conceptualization/" vocab-term="Conceptualization"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/data-curation/" vocab-term="Data curation"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/formal-analysis/" vocab-term="Formal analysis"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/funding-acquisition/" vocab-term="Funding acquisition"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/investigation/" vocab-term="Investigation"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/methodology/" vocab-term="Methodology"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/project-administration/" vocab-term="Project administration"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/resources/" vocab-term="Resources"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/software/" vocab-term="Software"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/supervision/" vocab-term="Supervision"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/validation/" vocab-term="Validation"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/visualization/" vocab-term="Visualization"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-original-draft/" vocab-term="Writing &#x2013; original draft"/> <role vocab-term-identifier="https://credit.niso.org/contributor-roles/writing-review-editing/" vocab-term="Writing &#x2013; review &amp; editing"/> </contrib> returnlet $role-term := @vocab-term returnlet $role-id := @vocab-term-identifier returnlet $role-text := replace(text(), '\s*\((equal|lead|supporting)\)', '', 'i') returnlet $suggest := $credit-roles//role[local:normalize-text(@vocab-term) = replace(local:normalize-text($role-text), ' (and|&) ', ' ')] returnlet $suggest-term := $suggest/@vocab-term => replace(' & ', ' &#x26; ') => replace(' – ', ' &#x2013; ') returnlet $suggest-id := $suggest/@vocab-term-identifier returnlet $suggestion := if (not(empty($suggest))) then concat(' Try "', $suggest-term, '" vocab-term="', $suggest-term, '" vocab-term-identifier="', $suggest-id, '"') else () returnnot(@vocab='credit') or (some $credit in $credit-roles//role satisfies ( $credit/@vocab-term = $role-term and $credit/@vocab-term = $role-text and $credit/@vocab-term-identifier = $role-id ))

Contexts