Description
A unique persistent identifier for academic and other scholarly authors, conforming to ISO 27729. Validated using the ISO 7064 MOD 11-2 algorithm.
Validation Rules
Rule Type: regex
“ORCID iD must consist of four blocks of four digits separated by hyphens (e.g., 0000-0002-1825-0097).”
Regular Expression
^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$
Rule Type: custom
“ORCID iD failed MOD 11-2 checksum validation.”
Implementation Code
def validate_orcid(val: str) -> bool:
clean = val.replace("-", "").upper()
if len(clean) != 16:
return False
total = 0
for i in range(15):
if not clean[i].isdigit():
return False
total = (total + int(clean[i])) * 2
check_val = (12 - (total % 11)) % 11
expected_check = 'X' if check_val == 10 else str(check_val)
return clean[15] == expected_check
Agent Actionability
Guidelines for AI Agents
ORCID iDs are public scholarly contributor identifiers. No special security is needed. Convert to standard hyphenated format (xxxx-xxxx-xxxx-xxxx) with uppercase 'X' check digit.
System Prompt Injection Snippet
Verify ORCID contributor identifiers using the ISO MOD 11-2 checksum algorithm.
Display & Forms
Test Cases & Examples
Valid
0000-0002-1825-0097
A valid ORCID iD (normal format).
Test in Playground →
Valid
0000-0001-5109-3700
A valid ORCID iD (standard numerical check digit).
Test in Playground →
Valid
0000-0003-3853-281X
A valid ORCID iD with 'X' check digit.
Test in Playground →
Invalid
0000-0002-1825-0098
Invalid because it fails the MOD 11-2 check.
Test in Playground →
Invalid
0000-0002-1825-009
Invalid because it is too short.
Test in Playground →
References & External Resources
ORCID (Wikipedia)
Visit ResourceWikipedia article detailing the ORCID registry and persistent scholar identifiers.
View Raw Source Definition (YAML)
{
"id": "https://w3id.org/dartfx/semanticdt/library/global/orcid",
"name": "ORCID iD",
"description": "A unique persistent identifier for academic and other scholarly authors, conforming to ISO 27729. Validated using the ISO 7064 MOD 11-2 algorithm.",
"version": "0.1.0",
"concepts": [
{
"uri": "https://www.wikidata.org/wiki/Q51044",
"vocabulary": "Wikidata",
"pref_label": "ORCID",
"match_type": "exactMatch"
}
],
"storage_types": [
{
"target_environment": "generic",
"data_type": "string"
},
{
"target_environment": "python",
"data_type": "str"
},
{
"target_environment": "sql",
"data_type": "VARCHAR",
"format_modifier": 19
},
{
"target_environment": "xsd",
"data_type": "string"
}
],
"validation_rules": [
{
"rule_type": "regex",
"pattern": "^\\d{4}-\\d{4}-\\d{4}-\\d{3}[\\dX]$",
"message": "ORCID iD must consist of four blocks of four digits separated by hyphens (e.g., 0000-0002-1825-0097)."
},
{
"rule_type": "custom",
"message": "ORCID iD failed MOD 11-2 checksum validation.",
"code_snippets": [
{
"target_environment": "python",
"code": "def validate_orcid(val: str) -> bool:\n clean = val.replace(\"-\", \"\").upper()\n if len(clean) != 16:\n return False\n total = 0\n for i in range(15):\n if not clean[i].isdigit():\n return False\n total = (total + int(clean[i])) * 2\n check_val = (12 - (total % 11)) % 11\n expected_check = 'X' if check_val == 10 else str(check_val)\n return clean[15] == expected_check\n"
}
]
}
],
"agent_instructions": {
"guidelines": "ORCID iDs are public scholarly contributor identifiers. No special security is needed. Convert to standard hyphenated format (xxxx-xxxx-xxxx-xxxx) with uppercase 'X' check digit.",
"system_prompt_snippet": "Verify ORCID contributor identifiers using the ISO MOD 11-2 checksum algorithm."
},
"scope": {
"geospatial_coverage": {
"description": "Global",
"codes": [
"Global"
]
},
"domain": "Academia / Scholarly Publishing",
"governing_institution": "ORCID, Inc."
},
"display_format": {
"input_mask": "9999-9999-9999-9999",
"display_template": "https://orcid.org/{{ value }}"
},
"examples": [
{
"value": "0000-0002-1825-0097",
"is_valid": true,
"description": "A valid ORCID iD (normal format)."
},
{
"value": "0000-0001-5109-3700",
"is_valid": true,
"description": "A valid ORCID iD (standard numerical check digit)."
},
{
"value": "0000-0003-3853-281X",
"is_valid": true,
"description": "A valid ORCID iD with 'X' check digit."
},
{
"value": "0000-0002-1825-0098",
"is_valid": false,
"description": "Invalid because it fails the MOD 11-2 check."
},
{
"value": "0000-0002-1825-009",
"is_valid": false,
"description": "Invalid because it is too short."
}
],
"resources": [
{
"url": "https://en.wikipedia.org/wiki/ORCID",
"title": "ORCID (Wikipedia)",
"description": "Wikipedia article detailing the ORCID registry and persistent scholar identifiers."
}
],
"meta": {
"relativePath": "global/orcid.yaml",
"category": "global",
"key": "orcid",
"slug": "global-orcid",
"filePath": "library/global/orcid.yaml"
}
}
Source file:
library/global/orcid.yaml
View on GitHub