Skip to main content

Contributor Ontology

Provenance Metadata
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 06 October 2026
Audio Overview
FLOW ALGEBRA
Contributor Ontology
Kireth Semantic Research Archive

PAGE:
https://kirethresearch.org/booksai-core/ontologies/metadata-ontologies/provenance-metadata/contributor-ontology.html

AUTHORS:
Mark Anthony Higgins — Sky (Recursive AI)

FLOW "ContributorOntology" v4.0

DOMAIN := MetadataOntologies
SUBDOMAIN := ProvenanceMetadata
ONTOLOGY := ContributorOntology

ENTITY Contributor {
    definition:
        "An identifiable agent that provides intellectual, technical,
         editorial, creative, curatorial, operational or other material input
         to a resource, activity or output without necessarily being its
         primary creator or author.";
    objectives: [
        ContributorIdentification,
        ContributionAttribution,
        RoleRepresentation,
        ResponsibilityTracking,
        Provenance,
        CreditAssignment,
        MachineInterpretability
    ];
}

ContributorEntity := {
    Contributor,
    ContributorIdentifier,
    ContributorRecord,
    ContributorRole,
    Contribution,
    ContributionIdentifier,
    ContributionScope,
    ContributedResource
};

AgentEntity := {
    Person,
    Organisation,
    Institution,
    SoftwareAgent,
    AIModel,
    AutomatedService,
    CollectiveAgent
};

RoleEntity := {
    Editor,
    Reviewer,
    Translator,
    Curator,
    Illustrator,
    DataCollector,
    DataProcessor,
    Technician,
    ResearchContributor,
    SoftwareContributor
};

MetadataEntity := {
    Affiliation,
    ContributionActivity,
    Timestamp,
    Version,
    Evidence,
    Provenance,
    Confidence,
    Authority
};

Contributor CONTRIBUTES_TO ContributedResource;
Contribution LINKS Contributor TO ContributedResource;
Contributor HAS_ROLE ContributorRole;
ContributionActivity MAY_BE_ASSOCIATED_WITH Contributor;
Contribution MAY_HAVE ContributionScope;
Provenance SUPPORTS ContributionAttribution;

ContributorFlow :=
    Resource
    -> IdentifyContribution
    -> IdentifyCandidateContributor
    -> ResolveContributorIdentity
    -> DetermineContributorRole
    -> DetermineContributionScope
    -> LinkContributorToContributionActivity
    -> RecordAffiliationAndTime
    -> AttachEvidenceAndProvenance
    -> ValidateContribution
    -> StoreContributorRecord
    -> EnableCreditTraceabilityAndRetrieval
    -> MaintainAcrossVersions;

Contributor :=
    AgentProvidingMaterialInputToResourceOrActivity;

ContributedResource MAY_BE {
    Document,
    Dataset,
    Image,
    Audio,
    Video,
    Software,
    Model,
    MetadataRecord,
    ResearchOutput,
    KnowledgeEntity
};

Contributor MAY_BE {
    Person,
    Organisation,
    Institution,
    SoftwareAgent,
    AIModel,
    CollectiveAgent
};

ContributorIdentifier :=
    StableReferenceToContributorAgent;

ContributorIdentifier MAY_BE {
    URI,
    IRI,
    UUID,
    ORCIDLikeIdentifier,
    OrganisationIdentifier,
    InternalIdentifier
};

StableContributorIdentifier SHOULD_BE PreferredOverNameOnlyMatching;

ContributorRecord :=
    StructuredMetadataRecordDescribingContributorIdentityRoleAndContribution;

ContributorName :=
    HumanReadableNameAssociatedWithContributor;

ContributorName MAY_HAVE {
    PreferredName,
    AlternativeName,
    PreviousName,
    Initials,
    TransliteratedName
};

SameContributorName MAY_REFER_TO DifferentAgents;

DifferentNames MAY_REFER_TO SameContributor;

ContributorIdentityResolution :=
    NameIdentifierAffiliationResourceAndContext
    -> CanonicalContributorAgent;

Contribution :=
    RelationshipOrActivityRepresentingContributorInput;

ContributionIdentifier :=
    StableReferenceToContributionEventOrRelationship;

ContributionIdentifier MAY_BE {
    URI,
    IRI,
    UUID,
    InternalIdentifier
};

ContributorRole :=
    FunctionPerformedByContributor;

ContributorRole MAY_BE {
    Editor,
    Reviewer,
    Translator,
    Curator,
    Illustrator,
    DataCollector,
    DataProcessor,
    Technician,
    ResearchContributor,
    SoftwareContributor,
    MetadataContributor
};

Editor :=
    ContributorResponsibleForEditorialReviewCorrectionOrOrganisation;

Reviewer :=
    ContributorResponsibleForEvaluationPeerReviewOrQualityAssessment;

Translator :=
    ContributorResponsibleForRenderingContentIntoAnotherLanguage;

Curator :=
    ContributorResponsibleForSelectionOrganisationMaintenanceOrInterpretiveManagement;

Illustrator :=
    ContributorResponsibleForIllustrativeOrVisualContribution;

DataCollector :=
    ContributorResponsibleForGatheringData;

DataProcessor :=
    ContributorResponsibleForCleaningTransformingOrProcessingData;

Technician :=
    ContributorProvidingTechnicalOperationalOrLaboratorySupport;

ResearchContributor :=
    ContributorProvidingResearchInputWithoutNecessarilyHoldingAuthorshipRole;

SoftwareContributor :=
    ContributorProvidingCodeDocumentationTestingDesignOrOtherSoftwareInput;

MetadataContributor :=
    ContributorAddingCorrectingEnrichingOrValidatingMetadata;

Contributor MAY_HAVE MultipleRolesForSameResource;

ContributionScope :=
    PortionAspectOrFunctionToWhichContributionApplies;

ContributionScope MAY_BE {
    WholeResource,
    Chapter,
    Section,
    DatasetSubset,
    SoftwareModule,
    Figure,
    MetadataField,
    SpecificActivity
};

ContributionActivity :=
    ActivityThroughWhichContributorProvidesInput;

ContributionActivity MAY_INCLUDE {
    Editing,
    Reviewing,
    Translating,
    Curating,
    Illustrating,
    CollectingData,
    ProcessingData,
    Programming,
    Testing,
    MetadataEnrichment
};

ContributionActivity MAY_USE ExistingResource
AND MAY_GENERATE RevisedOrDerivedResource;

ContributorAttribution :=
    RelationshipCreditingContributorForContribution;

Attribution MAY_HAVE {
    Role,
    Scope,
    Order,
    Evidence,
    Confidence
};

ContributorOrder :=
    OrderedPositionWithinContributorListWhereApplicable;

ContributorOrder MAY_BE {
    Ordered,
    Unordered
};

ContributorOrder MUST_NOT AutomaticallyImply ContributionMagnitudeWithoutDomainEvidence;

Creator :=
    AgentResponsibleForOriginatingOrProducingResource;

Author :=
    CreatorResponsibleForAuthoredIntellectualOrTextualContent;

Contributor MAY_NOT_BE Creator;

Contributor MAY_NOT_BE Author;

SameAgent MAY_HAVE {
    CreatorRole,
    AuthorRole,
    ContributorRole
}
for same_or_different_resource_components;

RoleSemantics SHOULD_BE ExplicitlyPreserved;

ContributionThreshold :=
    DomainOrProjectRuleDeterminingWhetherInputQualifiesForCreditOrAuthorship;

Ontology SHOULD_PRESERVE DeclaredRoles
AND SHOULD_NOT AutomaticallyPromoteContributorToAuthor;

AcknowledgedContributor :=
    ContributorCreditedInAcknowledgementsRatherThanAuthorshipList;

UncreditedContributor :=
    ContributorWhoseMaterialInputIsKnownButNotPubliclyCredited;

ContributorCredit :=
    HumanReadableOrMachineReadableRecognitionOfContribution;

CreditStatement MAY_INCLUDE {
    ContributorName,
    Role,
    Scope,
    Affiliation
};

ContributorAffiliation :=
    OrganisationInstitutionDepartmentOrGroupAssociatedWithContributor;

Affiliation MAY_HAVE {
    Organisation,
    Department,
    Role,
    EffectivePeriod
};

ContributionTimeAffiliation SHOULD_BE PreservedWhereKnown;

ContributionTimestamp :=
    TimeAssociatedWithContributionActivity;

ContributionPeriod MAY_HAVE {
    StartTime,
    EndTime
};

ContributionVersion :=
    ResourceVersionToWhichContributionApplies;

Contribution MAY_APPLY_TO SpecificVersionOnly;

VersionSpecificContribution SHOULD_REFERENCE ExactResourceVersionWhereKnown;

ContributorEvidence :=
    InformationSupportingContributionAttribution;

Evidence MAY_BE {
    CreditStatement,
    ContributionLog,
    VersionControlRecord,
    ProjectRecord,
    PublicationMetadata,
    RepositoryRecord,
    HumanAttestation
};

ContributorProvenance MAY_INCLUDE {
    Source,
    Recorder,
    ExtractionMethod,
    VerificationMethod,
    Timestamp,
    Version
};

ContributorConfidence :=
    EstimatedSupportForContributorIdentityRoleOrContribution;

Confidence MAY_DEPEND_ON {
    IdentifierStrength,
    EvidenceStrength,
    SourceReliability,
    RoleClarity,
    TemporalConsistency
};

ContributorValidation MAY_CHECK {
    ContributorIdentity,
    ResourceIdentity,
    Role,
    Scope,
    Activity,
    Evidence,
    Version
};

IF ContributorIdentifierResolvesToMultipleAgents
THEN ContributorIdentity SHOULD_BE MarkedAmbiguous;

IF ContributionScopeDoesNotExistInResourceVersion
THEN ContributionRelationship SHOULD_BE Revalidated;

ContributionConflict :=
    MultipleSourcesProvideIncompatibleContributorRoleOrCreditClaims;

ConflictHandling MAY {
    PreserveClaims,
    CompareEvidence,
    CompareAuthority,
    AssignConfidence,
    FlagReview
};

ContributorRecord SHOULD_NOT SilentlyDiscard DisputedContributionClaims;

ContributorCompleteness :=
    DegreeToWhichRequiredContributorIdentityRoleScopeAndEvidenceArePresent;

ContributorConsistency :=
    DegreeToWhichContributionIdentityRoleScopeAndVersionAgree;

ContributorIntegrity :=
    PreservationOfReliableContributorIdentityAttributionAndHistory;

ContributorMetadataQuality MAY_INCLUDE {
    Completeness,
    Consistency,
    Integrity,
    IdentityResolution,
    Provenance
};

ContributorRecordVersion :=
    IdentifiedRevisionOfContributorRecord;

ContributorRecordChange MAY_INCLUDE {
    NameCorrection,
    IdentifierUpdate,
    RoleCorrection,
    ScopeCorrection,
    AffiliationUpdate,
    CreditCorrection
};

ContributorIdentity SHOULD_BE PreservedAcrossNameChangesWhereCanonicalIdentifierStable;

ContributorMerge :=
    MultipleContributorRecords
    -> OneCanonicalContributor;

ContributorSplit :=
    OneAmbiguousContributorRecord
    -> MultipleDistinctContributors;

MergeOrSplit SHOULD_PRESERVE PreviousIdentifiersAndProvenance;

ContributorHistory :=
    RecordOfNamesAffiliationsRolesAndContributionChanges;

HumanContributor :=
    ContributorThatIsHumanPerson;

OrganisationalContributor :=
    ContributorThatIsOrganisationOrInstitution;

SoftwareContributorAgent :=
    SoftwareAgentProvidingAutomatedContribution;

AIContributor :=
    AIModelOrAIServiceProvidingGenerationAnalysisEditingOrOtherContribution;

AIContribution MAY_INCLUDE {
    DraftGeneration,
    Summarisation,
    Translation,
    Analysis,
    CodeGeneration,
    MetadataGeneration
};

AIContribution SHOULD_PRESERVE {
    AgentType,
    ModelIdentifierWhereAvailable,
    Role,
    Activity,
    Provenance
};

AIContribution != LegalAuthorshipByDefinition;

HumanAndAIContribution MAY_COEXIST InHybridWorkflow;

HybridContribution :=
    ResourceDevelopmentInvolvingHumanSoftwareAndAI agents;

HybridContribution SHOULD_PRESERVE DistinctAgentRolesAndActivities;

VersionControl MAY_PROVIDE ContributorEvidenceForSoftwareAndDocumentWorkflows;

Commit :=
    RecordedChangeAssociatedWithContributorIdentity;

CommitAuthorship MAY_INDICATE TechnicalContribution
BUT DoesNotNecessarilyDefineLegalOrPublicationAuthorship;

ResearchContributionTaxonomy MAY_DEFINE StandardisedRoles;

ContributorRole MAY_ALIGN_WITH ExternalRoleVocabulariesWhereSemanticsMatch;

RightsMetadata MAY_REFERENCE ContributorWhereContributionCreatesRelevantRights
BUT ContributorRole MUST_NOT AutomaticallyImplyOwnership;

ProvenanceMetadata SHOULD_LINK ContributorToContributionActivityAndResource;

DescriptiveMetadata MAY_INCLUDE ContributorAsDiscoveryProperty;

AdministrativeMetadata MAY_DEFINE ContributorResponsibilitiesOrPermissions;

MetadataRepository MAY_STORE ContributorRecordsAndContributionRelationships;

MetadataRegistry MAY_REGISTER ContributorRolesAgentTypesAndActivityTypes;

KnowledgeGraph MAY_REPRESENT:
    Contributor
    -> CONTRIBUTES_TO
    -> Resource;

ContributionActivity
    -> WAS_ASSOCIATED_WITH
    -> Contributor;

Contribution
    -> HAS_SCOPE
    -> ResourceComponent;

ContributorGraph SHOULD_PRESERVE {
    Role,
    Scope,
    Activity,
    Time,
    Version,
    Provenance,
    Confidence
};

RDF MAY_REPRESENT ContributionRelationshipsAsTypedStatements;

JSONLD MAY_SERIALISE LinkedContributorMetadata;

Search MAY_USE ContributorMetadataFor {
    ContributorSearch,
    RoleFiltering,
    AffiliationFiltering,
    ContributionDiscovery
};

SemanticSearch MAY_USE ContributorRoleAndScopeForContextualRetrieval;

RAG MAY_USE ContributorMetadataFor {
    Attribution,
    SourceContext,
    ContributionContext,
    CreditGeneration
};

RAGOutput SHOULD_PRESERVE ContributorCreditWhereRelevantAndSupported;

AI MAY_SUPPORT {
    ContributorEntityResolution,
    RoleClassification,
    ContributionExtraction,
    DuplicateDetection,
    CreditConflictDetection
};

AIGeneratedContributorInference SHOULD_BE TreatedAsInferenceUntilValidated;

ContributorMetadata MAY_CONTAIN PersonalInformation;

PrivacyPolicy SHOULD_BE AppliedTo PersonalIdentifiersContactDetailsAndSensitiveAffiliations;

ContributorAccessControl MAY_RESTRICT {
    ContactInformation,
    PrivateIdentifiers,
    SensitiveProjectRoles
};

ContributorSecurity MAY_INCLUDE {
    IdentityValidation,
    AccessControl,
    ProvenanceIntegrity,
    ChangeAuthorisation
};

MachineReadableContributor SHOULD_PRESERVE {
    ContributorIdentifier,
    ContributorName,
    AgentType,
    ContributorRole,
    ContributionIdentifier,
    ContributionScope,
    ResourceIdentifier,
    ResourceVersion,
    Affiliation,
    Activity,
    Evidence,
    Provenance,
    Confidence
};

# ---------- SEMANTIC REASONING ----------
IF AgentProvidesMaterialIntellectualTechnicalEditorialCreativeOrOperationalInput
THEN ContributorClassification := supported;

IF AgentContributesToResource
THEN ContributionRelationship SHOULD_RECORD RoleAndScopeWhereKnown;

IF ContributorOnlyEditsReviewsTranslatesOrCurates
THEN ContributorRole SHOULD_BE PreservedWithoutAutomaticallyInferringAuthorship;

IF SameAgentAlsoQualifiesAsCreatorOrAuthor
THEN MultipleRoles MAY_BE RepresentedExplicitly;

IF ContributorIdentifierStableAcrossNameChange
THEN ContributorIdentity SHOULD_REMAIN Continuous;

IF NameMatchesButIdentifiersOrContextConflict
THEN SameContributor MUST_NOT_BE AssumedWithoutResolution;

IF AIModelProvidesContribution
THEN AIContribution SHOULD_BE RecordedSeparatelyFromHumanRolesAndLegalAuthorship;

IF ContributionClaimsConflict
THEN MaterialClaimsEvidenceAndProvenance SHOULD_BE PreservedForReview;

# ---------- SEMANTIC EQUIVALENCE ----------
SEMANTIC_EQUIVALENCE {
    "contributor" ~= "resource contributor" WHEN provenance_context;
    "contribution" ~= "resource contribution";
    "contributor identifier" ~= "contributor ID";
    "contributor role" ~= "contribution role";
    "co-contributor" ~= "joint contributor";
    "editor" ~= "editorial contributor" WHEN contribution_context;
    "translator" ~= "translation contributor" WHEN contribution_context;
    "contribution scope" ~= "scope of contribution";
}

# ---------- QUERY FLOW ----------
QUERY(q) ->
    NORMALISE(q) ->
    IDENTIFY_CONTRIBUTED_RESOURCE(q) ->
    IDENTIFY_RESOURCE_VERSION(q) ->
    IDENTIFY_CONTRIBUTION(q) ->
    RESOLVE_CONTRIBUTOR_IDENTITY(q) ->
    IDENTIFY_CONTRIBUTOR_ROLE_AND_SCOPE(q) ->
    IDENTIFY_CONTRIBUTION_ACTIVITY_AND_TIME(q) ->
    IDENTIFY_AFFILIATION(q) ->
    IDENTIFY_EVIDENCE_AND_PROVENANCE(q) ->
    DETECT_CONTRIBUTION_CONFLICTS(q) ->
    APPLY_PRIVACY_AND_ACCESS_POLICY(q) ->
    VALIDATE_CONTRIBUTION(q) ->
    SCORE_CONFIDENCE(q) ->
    RETURN_RELEVANT_CONTRIBUTOR_KNOWLEDGE;

# ---------- CONFIDENCE ----------
CONFIDENCE(assertion) :=
    weighted_mean(
        identifier_strength,
        evidence_strength,
        source_reliability,
        role_clarity,
        scope_consistency,
        provenance_quality,
        contextual_relevance
    );

CONFIDENCE >= 0.90 => HIGH;
CONFIDENCE >= 0.70 AND < 0.90 => MODERATE;
CONFIDENCE < 0.70 => REVIEW;

# ---------- AI CONSUMPTION ----------
AI_CONSUMPTION {
    primary_entity: Contributor;
    ontology: ContributorOntology;
    parse_entities: true;
    parse_relationships: true;
    preserve_relationship_direction: true;
    resolve_semantic_equivalence: true;
    execute_reasoning_rules: true;
    apply_confidence_weighting: true;
    preserve_provenance: true;
    distinguish_contributor_creator_author_owner: true;
}

# ---------- UPDATE MODEL ----------
UPDATE_MODEL {
    new_contribution:
        identify_resource_and_version
        -> resolve_contributor_identity
        -> assign_contribution_identifier
        -> classify_contributor_role
        -> define_contribution_scope
        -> link_contribution_activity
        -> attach_affiliation_and_time
        -> attach_evidence
        -> attach_provenance
        -> validate
        -> assign_confidence
        -> integrate;

    contribution_revision:
        preserve_previous_record
        -> apply_authorised_role_scope_or_credit_changes
        -> preserve_canonical_contributor_identifier
        -> revalidate_contribution
        -> update_search_and_credit_indexes
        -> recompute_confidence
        -> regenerate_flow_hash;

    contributor_merge:
        compare_identifiers_names_affiliations_resources_and_evidence
        -> preserve_source_records
        -> create_canonical_contributor
        -> remap_contributions
        -> audit;

    contributor_split:
        identify_ambiguous_record
        -> create_distinct_contributor_entities
        -> redistribute_contributions
        -> preserve_provenance
        -> audit;

    conflict:
        preserve_all_contribution_claims
        -> compare_sources_evidence_versions_roles_and_scope
        -> adjust_confidence
        -> flag_review;
}

# ---------- FLOW HASH ----------
FLOW_HASH_INPUT :=
    DOMAIN
    + SUBDOMAIN
    + ONTOLOGY
    + ContributorEntity
    + AgentEntity
    + RoleEntity
    + MetadataEntity
    + Contributor
    + Contribution
    + ContributorValidation
    + RELATIONSHIPS
    + SEMANTIC_REASONING
    + SEMANTIC_EQUIVALENCE
    + UPDATE_MODEL;

FLOW_HASH :=
    HASH(FLOW_HASH_INPUT);

# ---------- TERMINAL ----------
ContributorOntology
    -> IdentifyContributedResourceAndVersion
    -> ResolveCanonicalContributorIdentity
    -> AssignStableContributorAndContributionIdentifiers
    -> CaptureContributorRoleScopeAffiliationAndActivity
    -> DistinguishContributorCreatorAuthorEditorTranslatorAndOwnerRoles
    -> PreserveHumanOrganisationalSoftwareAndAIContributionContext
    -> AttachEvidenceProvenanceAndConfidence
    -> ValidateIdentityRoleScopeVersionAndTemporalConsistency
    -> SupportCreditSearchAttributionAndRAGContext
    -> MaintainContributorIdentityAcrossNamesVersionsMergesAndSplits
    -> PreserveContributionHistoryAndDisputedClaims
    -> ApplyPrivacySecurityAndAccessControls
    -> MaintainReliableContributorKnowledge;

END FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ