Skip to main content

Authority control

Authority control ensures consistency in the knowledge graph by maintaining canonical records for concepts, people, and organizations. This document covers how authority records are managed and synchronized with external vocabularies.

What is authority control?

Authority control links variant names and spellings to a single canonical concept:

User searches: "machine learning"
→ Matches authority record: "Machine Learning"
→ Includes aliases: "ML", "statistical learning"
→ Links to: Wikidata Q2539, LCSH sh85079324

This prevents fragmentation where "machine learning", "Machine Learning", and "ML" become separate concepts.

Authority record structure

interface AuthorityRecord {
id: string; // Canonical identifier
type: 'field' | 'person' | 'organization' | 'concept';
name: string; // Preferred name
aliases: string[]; // Alternative names
description: string; // Scope note

// Relationships
broaderTerms: string[]; // Parent concepts
narrowerTerms: string[]; // Child concepts
relatedTerms: string[]; // Associated concepts

// External links
externalIds: {
wikidata?: string; // Q-identifier
lcsh?: string; // Library of Congress
viaf?: string; // Virtual International Authority File
fast?: string; // Faceted Application of Subject Terminology
orcid?: string; // For person records
ror?: string; // For organization records
};

// Metadata
createdAt: string;
updatedAt: string;
createdBy: string; // DID of creator
source: 'manual' | 'reconciliation' | 'import';
}

Authority editors

Authority editors are library science professionals responsible for maintaining authority records:

Qualifications

RequirementDescription
EducationMLIS, MLS, or equivalent degree
Experience2+ years cataloging or metadata work
KnowledgeFamiliarity with LCSH, FAST, Wikidata
AppointmentGovernance committee approval

Responsibilities

  • Create and maintain authority records
  • Reconcile with external vocabularies
  • Review authority-related proposals
  • Train community on authority standards
  • Vote on authority changes (4.5x weight)

Current authority editors

Authority editors are listed publicly:

GET /xrpc/pub.chive.governance.listAuthorityEditors

External vocabulary integration

Chive synchronizes with external knowledge bases:

VocabularyTypeSync frequency
WikidataGeneral knowledge graphDaily
LCSHLibrary of Congress Subject HeadingsMonthly
VIAFVirtual International Authority FileMonthly
FASTFaceted Application of Subject TerminologyMonthly
RORResearch Organization RegistryWeekly
ORCIDResearcher identifiersReal-time

Reconciliation process

Local term → Wikidata API → Candidate matches


Confidence score
├── High (>0.9): Auto-link
├── Medium (0.7-0.9): Editor review
└── Low (<0.7): Manual reconciliation

Evidence quality tiers

Reconciliations are scored by evidence quality:

TierScoreEvidence type
Definitive1.0Exact identifier match (DOI, ORCID)
Strong0.9Multiple corroborating sources
Moderate0.7Single authoritative source
Weak0.5Name match only
Tentative0.3Partial match, needs review

Managing authority records

Creating a record

Only authority editors can create records directly. Community members propose via the standard proposal process:

{
"type": "create_authority",
"title": "Add authority record for MIT CSAIL",
"changes": {
"record": {
"type": "organization",
"name": "MIT Computer Science and Artificial Intelligence Laboratory",
"aliases": ["MIT CSAIL", "CSAIL"],
"externalIds": {
"wikidata": "Q1500407",
"ror": "03fmab257"
}
}
}
}

Updating a record

Changes to existing records follow the proposal process with a 60% threshold:

Change typeThresholdApprover
Add alias60%, 3 votesCommunity
Update description60%, 3 votesCommunity
Link external ID60%, 3 votesAuthority editor review
Change preferred name75%, 5 votesAuthority editor approval
Merge records75%, 7 votesAuthority editor approval

Merging records

When duplicate records are discovered:

  1. Authority editor identifies duplicates
  2. Proposal created with merge rationale
  3. Community votes (75% threshold)
  4. If approved, records merged:
    • Keep record with more usage
    • Combine aliases
    • Preserve all external links
    • Redirect old ID to merged record

Reconciliation workflow

Monthly sync protocol

Day 1-3:   Fetch updates from external sources
Day 4-7: Run automated reconciliation
Day 8-14: Authority editors review flagged items
Day 15-20: Community proposal period for new links
Day 21-28: Voting on proposals
Day 28+: Changes enacted

Handling conflicts

When external sources disagree:

Conflict typeResolution
Name variantsUse most authoritative source's preferred form
Scope differencesDocument scope notes from each source
Hierarchy disagreementsFollow LCSH for subjects, ROR for organizations
Identifier conflictsFlag for authority editor review

Quality assurance

Validation rules

Authority records must pass validation:

function validateAuthority(record: AuthorityRecord): ValidationResult {
const errors: string[] = [];

if (!record.name || record.name.length < 2) {
errors.push('Name required (min 2 characters)');
}

if (record.aliases.some(a => a === record.name)) {
errors.push('Alias cannot match preferred name');
}

if (record.type === 'person' && !record.externalIds.orcid) {
errors.push('Person records should have ORCID when available');
}

// Check for circular relationships
if (hasCircularRelationship(record)) {
errors.push('Circular broader/narrower relationship detected');
}

return { valid: errors.length === 0, errors };
}

Audit trail

All changes to authority records are logged:

{
"recordId": "authority-123",
"action": "update",
"changes": {
"aliases": {
"added": ["ML"],
"removed": []
}
},
"actor": "did:plc:editor...",
"timestamp": "2025-01-15T10:30:00Z",
"proposal": "proposal-456"
}

API endpoints

Search authorities

GET /xrpc/pub.chive.graph.searchAuthorities?query=machine+learning&type=field

Get authority

GET /xrpc/pub.chive.graph.getAuthority?id=authority-123

Get reconciliations

GET /xrpc/pub.chive.graph.getAuthorityReconciliations?id=authority-123

Next steps