Property 2: Creator

The main researchers involved in producing the data, or the authors of the publication
2. Creator
Required Occurrence: 1-n Database: publication_creators

The main researchers involved in producing the data, or the authors of the publication, in priority order. The personal name format should be: family, given.

DOCiD™ Implementation: The PublicationCreators model provides comprehensive support for multiple creator identifiers, roles, and affiliations. It supports international identifier schemes and flexible role assignments for diverse research collaboration patterns found in African institutions.

Sub-properties

2.1 familyName
Required Occurrences: 1 Type: String

Definition: The surname or last name of the creator.

Database Schema
family_name = Column(String(255), nullable=False)

Allowed values, examples, other constraints:

  • Data Type: UTF-8 text string
  • Maximum Length: 255 characters
  • Character Set: Unicode support for international characters including African scripts
  • Required: Must be provided for all creators

Examples:

  • Okonkwo
  • Al-Zahra
  • Mthembu
  • van der Merwe
  • Diallo
  • Ogundipe
  • Kimani
  • Asante

African Naming Conventions

Supports diverse African family name structures including patronymic systems, clan names, and compound family names. Accommodates naming conventions from various African cultures including Bantu, Afroasiatic, and Niger-Congo language families.

2.2 givenName
Optional Occurrences: 0-1 Type: String

Definition: The personal or first name of the creator, including middle names.

Database Schema
given_name = Column(String(255))

Allowed values, examples, other constraints:

  • Data Type: UTF-8 text string
  • Maximum Length: 255 characters
  • Character Set: Unicode support for international characters
  • Optional: May be omitted for creators known primarily by family name
  • Multiple Names: Can include multiple given names separated by spaces

Examples based on the 2.1 family names:

  • Amara (for Okonkwo, Amara)
  • Fatima (for Al-Zahra, Fatima)
  • Themba (for Mthembu, Themba)
  • Sarah Nomsa (for van der Merwe, Sarah Nomsa)
  • Mariama (for Diallo, Mariama)
  • Adebayo (for Ogundipe, Adebayo)
  • Michael Mwangi (for Kimani, Michael Mwangi)
  • Kwame (for Asante, Kwame)

Cultural Considerations

The given name field is optional to accommodate naming conventions where individuals may be known primarily by their family name or single name, which is common in some African cultures. This also respects traditional naming systems where titles or honorifics may be more important than given names.

2.3 nameIdentifier
Optional Occurrences: 0-n Type: String

Definition: Uniquely identifies an individual or legal entity, according to various identifier schemes. The format is dependent upon the identifier scheme.

Database Schema
identifier = Column(String(500))  # Stores the full resolvable URL
identifier_type = Column(String(50))  # Stores the type (e.g., 'orcid', 'isni', 'viaf')

Allowed values, examples, other constraints:

  • Data Type: UTF-8 text string (full resolvable URL)
  • Maximum Length: 500 characters
  • Format: Complete HTTP/HTTPS URL to the identifier resource
  • Validation: Must be a valid URL format
  • Uniqueness: Should uniquely identify the individual globally
  • Persistence: Should be persistent and resolvable over time

Examples by identifier type:

Identifier Type Example Pattern Authority
ORCID https://orcid.org/0000-0002-1825-0097 https://orcid.org/0000-0000-0000-000X ORCID, Inc.
ISNI https://isni.org/isni/0000000121032683 https://isni.org/isni/[16 digits] ISNI International Agency
VIAF http://viaf.org/viaf/102333412 http://viaf.org/viaf/[numeric ID] OCLC Research
ResearcherID http://www.researcherid.com/rid/A-5678-2012 http://www.researcherid.com/rid/[ID] Clarivate Analytics
Scopus ID http://www.scopus.com/inward/authorDetails.url?authorID=7410587685 http://www.scopus.com/[path]?authorID=[ID] Elsevier
African Identifiers https://researchers.africa.org/profile/12345 Regional identifier schemes African research networks

Format Requirements:

  • ORCID: Must follow pattern https://orcid.org/0000-0000-0000-000X (where X is 0-9 or X)
  • ISNI: Must be 16 digits with optional spaces or hyphens in display format
  • VIAF: Numeric identifier appended to base URL
  • HTTP/HTTPS: All identifiers must use secure protocols where available
  • Case Sensitivity: URLs are case-sensitive and must match exactly

DOCiD™ Implementation Notes

DOCiD™ stores the complete resolvable URL rather than just the identifier value to ensure proper resolution and to support multiple identifier schemes simultaneously. The system validates identifier formats before storage and can resolve identifiers to retrieve additional metadata about creators.

2.4 nameIdentifierScheme
Optional Occurrences: 0-1 Controlled Vocabulary

Definition: The name of the name identifier scheme. This is automatically determined based on the identifier URL format and stored in the identifier_type field.

Allowed values, examples, other constraints:

  • Data Type: Controlled vocabulary from predefined list
  • Case Sensitivity: Lowercase preferred
  • Validation: Must correspond to supported identifier schemes
  • Auto-Detection: DOCiD™ can auto-detect scheme from URL pattern

Supported Schemes:

Scheme Value Display Name Standard URL Pattern
orcid ORCID Open Researcher and Contributor ID https://orcid.org/*
isni ISNI ISO 27729 International Standard Name Identifier https://isni.org/isni/*
viaf VIAF Virtual International Authority File http://viaf.org/viaf/*
dai DAI Digital Author Identifier (Netherlands) http://www.narcis.nl/person/*
researcherid ResearcherID Web of Science ResearcherID http://www.researcherid.com/rid/*
scopusid Scopus ID Scopus Author Identifier http://www.scopus.com/inward/authorDetails.url?authorID=*
lcnaf LCNAF Library of Congress Name Authority File http://id.loc.gov/vocabulary/relators/*
gnd GND Gemeinsame Normdatei http://d-nb.info/gnd/*

Examples:

  • For identifier "https://orcid.org/0000-0002-1825-0097" → scheme: "orcid"
  • For identifier "https://isni.org/isni/0000000121032683" → scheme: "isni"
  • For identifier "http://viaf.org/viaf/102333412" → scheme: "viaf"
  • For identifier "http://www.researcherid.com/rid/A-5678-2012" → scheme: "researcherid"

Automatic Detection

DOCiD™ automatically detects the identifier scheme based on the URL pattern and populates the identifier_type field. This ensures consistency and reduces manual input errors.

2.5 affiliation
Optional Occurrences: 0-n Type: Related Entity

Definition: The organizational or institutional affiliation of the creator. In DOCiD™, affiliations are managed through the PublicationOrganization model with comprehensive organization metadata.

Allowed values, examples, other constraints:

  • Implementation: Separate PublicationOrganization model
  • Multiple Affiliations: Supports multiple institutional affiliations per creator
  • Organization Identifiers: Integrated with ROR (Research Organization Registry)
  • Geographic Information: Includes country and regional data
  • Organization Types: Academic, government, commercial, NGO classifications

Affiliation Structure (PublicationOrganization model):

Related Model Schema
class PublicationOrganization(db.Model):
    id = Column(Integer, primary_key=True, autoincrement=True)
    publication_id = Column(Integer, ForeignKey('publications.id'), nullable=False)
    name = Column(String(255), nullable=False)  # Organization name
    type = Column(String(255), nullable=False)  # Organization type
    other_name = Column(String(255))  # Alternative names
    country = Column(String(255))  # Country location
    identifier = Column(String(500))  # ROR ID or other identifier
    identifier_type = Column(String(50))  # Type of identifier (ror, grid, isni)

Examples of organization affiliations:

  • University of Cape Town (ROR: https://ror.org/01ggx4157) - South Africa
  • University of Ghana (ROR: https://ror.org/05591te55) - Ghana
  • American University in Cairo (ROR: https://ror.org/03gc78e51) - Egypt
  • University of the Witwatersrand (ROR: https://ror.org/03rp50963) - South Africa
  • Council for Scientific and Industrial Research (ROR: https://ror.org/0145zh013) - South Africa
  • University of Ibadan (ROR: https://ror.org/01za5dv85) - Nigeria
  • Université Cheikh Anta Diop (ROR: https://ror.org/03qx6w235) - Senegal
  • Kenya Education Network (KENET) (ROR: https://ror.org/04b4z2r68) - Kenya

Organization Types:

  • Education: Universities, colleges, schools
  • Government: Government agencies and departments
  • Company: Commercial and industry organizations
  • Healthcare: Hospitals, medical centers, health organizations
  • Nonprofit: NGOs, foundations, civil society organizations
  • Other: Research institutes, international organizations

DOCiD™ Organization Integration

Creator affiliations in DOCiD™ are managed through a sophisticated organization model that integrates with ROR (Research Organization Registry) for global organization identification. This ensures accurate institutional attribution and supports advanced search and analytics capabilities.

API Integration Example:

Creator with Affiliation
{
  "creators": [
    {
      "family_name": "Okonkwo",
      "given_name": "Amara",
      "identifier": "https://orcid.org/0000-0002-1234-5678",
      "identifier_type": "orcid",
      "role_id": "author"
    }
  ],
  "organizations": [
    {
      "name": "University of Cape Town",
      "type": "Education",
      "country": "South Africa",
      "identifier": "https://ror.org/01ggx4157",
      "identifier_type": "ror"
    }
  ]
}

PublicationCreators Database Model

Complete Model Definition
class PublicationCreators(db.Model):
    """
    Creators related to publications
    """
    __tablename__ = 'publication_creators'

    id = Column(Integer, primary_key=True, autoincrement=True)
    publication_id = Column(Integer, ForeignKey('publications.id'), nullable=False, index=True)
    family_name = Column(String(255), nullable=False)
    given_name = Column(String(255))
    identifier = Column(String(500))  # Stores the full resolvable URL
    identifier_type = Column(String(50))  # Stores the type (e.g., 'orcid', 'isni', 'viaf')
    role_id = Column(String(255), nullable=False)

    # Relationships
    publication = relationship('Publications', back_populates='publication_creators')

    def __repr__(self):
        return f"<PublicationCreators(id={self.id}, family_name='{self.family_name}', publication_id={self.publication_id})>"

Field Specifications

Field Type Constraints Purpose
id Integer Primary Key, Auto-increment Unique identifier for creator record
publication_id Integer Foreign Key, Not Null, Indexed Links creator to specific publication
family_name String(255) Not Null Creator's surname/family name
given_name String(255) Nullable Creator's first/given name(s)
identifier String(500) Nullable Full resolvable URL for creator identifier
identifier_type String(50) Nullable Type of identifier (orcid, isni, viaf, etc.)
role_id String(255) Not Null Creator's role in the publication

API Examples

Creating Publication with Creators

POST /api/v1/publications/publish
{
  "title": "AI Applications in African Healthcare Systems",
  "description": "Comprehensive study on machine learning applications in healthcare across Sub-Saharan Africa",
  "resource_type_id": 1,
  "publication_type_id": 1,
  "creators": [
    {
      "family_name": "Okonkwo",
      "given_name": "Amara",
      "identifier": "https://orcid.org/0000-0002-1234-5678",
      "identifier_type": "orcid",
      "role_id": "author"
    },
    {
      "family_name": "Al-Zahra",
      "given_name": "Fatima",
      "identifier": "https://orcid.org/0000-0004-3456-7890",
      "identifier_type": "orcid",
      "role_id": "co-author"
    },
    {
      "family_name": "Mthembu",
      "given_name": "Themba",
      "identifier": "https://isni.org/isni/0000000121032683",
      "identifier_type": "isni",
      "role_id": "data-collector"
    }
  ]
}

API Response

Response
{
  "status": "success",
  "data": {
    "id": 123,
    "title": "AI Applications in African Healthcare Systems",
    "document_docid": "DOCID.123",
    "doi": "10.5555/docid.123",
    "creators": [
      {
        "id": 456,
        "family_name": "Okonkwo",
        "given_name": "Amara",
        "identifier": "https://orcid.org/0000-0002-1234-5678",
        "identifier_type": "orcid",
        "role_id": "author",
        "full_name": "Okonkwo, Amara"
      },
      {
        "id": 457,
        "family_name": "Al-Zahra",
        "given_name": "Fatima",
        "identifier": "https://orcid.org/0000-0004-3456-7890",
        "identifier_type": "orcid",
        "role_id": "co-author",
        "full_name": "Al-Zahra, Fatima"
      },
      {
        "id": 458,
        "family_name": "Mthembu",
        "given_name": "Themba",
        "identifier": "https://isni.org/isni/0000000121032683",
        "identifier_type": "isni",
        "role_id": "data-collector",
        "full_name": "Mthembu, Themba"
      }
    ]
  },
  "message": "Publication created successfully"
}

Adding Creators to Existing Publication

POST /api/v1/publications/publication/{id}/creators
{
  "creators": [
    {
      "family_name": "Kimani",
      "given_name": "Michael",
      "identifier": "https://orcid.org/0000-0009-8901-2345",
      "identifier_type": "orcid",
      "role_id": "reviewer"
    }
  ]
}

Updating Creator Information

PUT /api/v1/publications/creators/{creator_id}
{
  "family_name": "Okonkwo",
  "given_name": "Amara Chioma",
  "identifier": "https://orcid.org/0000-0002-1234-5678",
  "identifier_type": "orcid",
  "role_id": "lead-author"
}

Creator Roles

DOCiD™ supports a comprehensive set of creator roles that reflect diverse African research collaboration patterns and traditional knowledge systems.

Role ID Role Name Description Context
author Author Primary content creator Standard academic authorship
co-author Co-Author Collaborative content creator Multi-author publications
lead-author Lead Author Primary responsible author Corresponding author role
editor Editor Content editor and reviewer Editorial oversight
contributor Contributor Secondary contributor General contribution
data-collector Data Collector Data collection specialist Research data gathering
supervisor Supervisor Research supervisor Academic supervision
project-leader Project Leader Project coordinator Project management
translator Translator Language translator Multilingual publications
reviewer Reviewer Peer reviewer Quality assurance
knowledge-holder Knowledge Holder Traditional knowledge contributor Indigenous knowledge systems
community-representative Community Representative Community liaison and representative Community-based research

Validation and Constraints

Required Fields

  • family_name: Must be provided for all creators
  • role_id: Must reference a valid creator role
  • publication_id: Must reference an existing publication

Identifier Validation

ORCID Validation Pattern
# ORCID format: https://orcid.org/0000-0000-0000-0000
orcid_pattern = r'^https://orcid\.org/\d{4}-\d{4}-\d{4}-\d{3}[\dX]$'

# Example valid ORCID:
"https://orcid.org/0000-0002-1825-0097"

Cultural Sensitivity Guidelines

Naming Conventions

  • Support for single names where culturally appropriate
  • Flexible handling of complex family name structures
  • Accommodation for titles and honorifics in Indigenous contexts
  • Respectful handling of Traditional Knowledge attributions

Best Practices

Creator Ordering

Creators should be listed in order of contribution significance, following academic conventions or community protocols for Traditional Knowledge.

Identifier Usage

  • ORCID preferred: Use ORCID identifiers when available for academic researchers
  • Full URLs: Store complete resolvable URLs rather than just identifier values
  • Type specification: Always specify the identifier type for proper resolution
  • Validation: Validate identifier formats before storage

Role Assignment

  • Accurate roles: Assign roles that accurately reflect actual contributions
  • Cultural sensitivity: Use appropriate roles for Traditional Knowledge contributions
  • Community consent: Ensure community consent for Traditional Knowledge attributions

National ID as a creator identifier

Many African researchers — particularly community knowledge holders, independent researchers, and contributors documenting indigenous knowledge — hold no ORCID. DOCiD therefore supports a national identity number as a creator identifier, so that authorship can be recorded without forcing registration with an external service.

Not a seeded vocabulary value

national_id is not present in the creators_identifiers reference table, which seeds only ORCID, ISNI and VIAF. It exists as a literal string in publication_creators.identifier_type. A client that populates its identifier dropdown from the reference endpoint will not see it, and must add it explicitly.

Storage

Two rows are written. The creator row holds the number itself in identifier, with identifier_type set to national_id. Separately, a registry table records the person: name, national ID number, and country, unique on the combination of number and country — the same number may legitimately exist in two countries.

There is no country column on the creator row. Country is resolved from the registry, and only the owner-only edit endpoint returns it.

Masking

A national identity number is personal data, and DOCiD records are public. Since September 2026 the API redacts these values server-side: the number is returned in full only to the owner of the record, presenting a valid token. Every other caller — anonymous, another authenticated user, a resolver hit, a harvester — receives a masked form.

The same creator, two callers
// anonymous, or any non-owner
{
  "family_name": "Achieng",
  "identifier": "4*******8",
  "identifier_type": "national_id",
  "identifier_masked": true
}

// the record owner, with Authorization: Bearer <token>
{
  "family_name": "Achieng",
  "identifier": "455765838",
  "identifier_type": "national_id"
}

The mask preserves the first and last character. Values of two characters or fewer are returned unchanged, since masking them would reveal as much as it hid. Masked entries carry identifier_masked: true; entries without that flag are unmasked.

Redaction is applied by the publication detail endpoint, both DOCiD resolvers, and the DOI resolver. Because it happens in the API rather than the interface, a masked value cannot be recovered by reading the network response.

Implications for clients

Never cache a masked value and later treat it as an identifier — it is lossy and will not match. Never use it as a deduplication key. If your integration genuinely requires full national identity numbers, it needs the owner's credentials, and it needs a lawful basis for holding that data.

Exclusion from structured data

National identity numbers are excluded from the schema.org sameAs assertions emitted on public record pages. Those assertions are for resolvable public identifiers such as ORCID; a national ID is neither resolvable nor public, and must not be published to search engines as if it were.