{
"id": "pub.chive.graph.node",
"defs": {
"main": {
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"id",
"kind",
"label",
"status",
"createdAt"
],
"properties": {
"id": {
"type": "string",
"description": "UUID identifier (also used as rkey)"
},
"kind": {
"type": "string",
"description": "Node kind: 'type' for classifications/categories, 'object' for instances",
"knownValues": [
"type",
"object"
]
},
"slug": {
"type": "string",
"maxLength": 100,
"description": "Human-readable URL-safe identifier (e.g., 'pdf', 'computer-science')"
},
"label": {
"type": "string",
"maxLength": 500,
"description": "Primary display label"
},
"status": {
"type": "string",
"description": "Lifecycle status",
"knownValues": [
"proposed",
"provisional",
"established",
"deprecated"
]
},
"subkind": {
"type": "string",
"maxLength": 50,
"description": "Slug identifying the subkind (e.g., 'field', 'facet', 'institution')"
},
"metadata": {
"ref": "#nodeMetadata",
"type": "ref",
"description": "Subkind-specific metadata"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"createdBy": {
"type": "string",
"format": "did",
"description": "DID of creator or governance"
},
"updatedAt": {
"type": "string",
"format": "datetime"
},
"subkindUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the subkind type node"
},
"description": {
"type": "string",
"maxLength": 2000,
"description": "Detailed description or scope note"
},
"externalIds": {
"type": "array",
"items": {
"ref": "#externalId",
"type": "ref"
},
"maxLength": 20,
"description": "External identifier mappings"
},
"proposalUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the proposal that created this node (null for seeded)"
},
"deprecatedBy": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the node that supersedes this one"
},
"schemaRevision": {
"type": "integer",
"minimum": 1,
"description": "Schema revision this record was created with. Absent means revision 1."
},
"alternateLabels": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500
},
"maxLength": 50,
"description": "Alternate labels, synonyms, translations"
}
}
},
"description": "Unified knowledge graph node combining concepts, organizations, authorities, fields, and facets. All relationships are via edges."
},
"externalId": {
"type": "object",
"required": [
"system",
"identifier"
],
"properties": {
"uri": {
"type": "string",
"format": "uri",
"description": "Full URI for the identifier"
},
"system": {
"type": "string",
"description": "Identifier system",
"knownValues": [
"wikidata",
"ror",
"orcid",
"isni",
"viaf",
"lcsh",
"fast",
"credit",
"spdx",
"fundref",
"mesh",
"aat",
"gnd",
"anzsrc",
"skos",
"cosmik",
"schema-org",
"dublin-core"
]
},
"matchType": {
"type": "string",
"description": "SKOS match type",
"knownValues": [
"exact",
"close",
"broader",
"narrower",
"related"
]
},
"identifier": {
"type": "string",
"maxLength": 200,
"description": "Identifier value"
}
},
"description": "External identifier mapping"
},
"nodeMetadata": {
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 200,
"description": "City name (for institutions)"
},
"spdxId": {
"type": "string",
"maxLength": 100,
"description": "SPDX license identifier (for licenses)"
},
"country": {
"type": "string",
"maxLength": 2,
"description": "ISO 3166-1 alpha-2 country code (for institutions)"
},
"website": {
"type": "string",
"format": "uri",
"description": "Official website URL"
},
"mimeTypes": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 10,
"description": "MIME types (for document-format)"
},
"reflexive": {
"type": "boolean",
"description": "Whether this relation is reflexive (A rel A is always valid)"
},
"symmetric": {
"type": "boolean",
"description": "Whether this relation is symmetric (A rel B implies B rel A)"
},
"functional": {
"type": "boolean",
"description": "Whether this relation is functional (each source has at most one target)"
},
"transitive": {
"type": "boolean",
"description": "Whether this relation is transitive (A rel B and B rel C implies A rel C)"
},
"inverseSlug": {
"type": "string",
"maxLength": 50,
"description": "Slug of inverse relation (for relation types)"
},
"displayOrder": {
"type": "integer",
"description": "Display order for UI sorting"
},
"organizationStatus": {
"type": "string",
"description": "Organization operational status (for institutions)",
"knownValues": [
"active",
"merged",
"inactive",
"defunct"
]
}
},
"description": "Subkind-specific metadata fields"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"revision": 1
}