48 lines
2 KiB
JSON
48 lines
2 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "Fictional Entity Registry",
|
|
"description": "Custom entities for the folksy idiom generator. Each entity declares its category roles and relationships, allowing it to fill template slots alongside real ConceptNet vocabulary.",
|
|
"type": "object",
|
|
"required": ["entities"],
|
|
"properties": {
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["name", "categories", "relations"],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Display name of the entity (e.g., 'Xorhir', 'turtleduck')"
|
|
},
|
|
"categories": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"minItems": 1,
|
|
"description": "Category roles this entity can fill (e.g., ['animal', 'mount'])"
|
|
},
|
|
"relations": {
|
|
"type": "object",
|
|
"description": "Typed relationships to other entities or real words. Keys are ConceptNet relation types (e.g., 'AtLocation', 'UsedFor', 'HasA', 'MadeOf', 'CapableOf', 'Causes', 'HasPrerequisite', 'PartOf', 'ReceivesAction', 'Desires'). Values are arrays of target words.",
|
|
"additionalProperties": {
|
|
"type": "array",
|
|
"items": { "type": "string" }
|
|
}
|
|
},
|
|
"properties": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"description": "Adjectives/properties of this entity (e.g., ['fast', 'stubborn', 'scaly']). Used to fill HasProperty slots in templates."
|
|
},
|
|
"derived_from": {
|
|
"type": "array",
|
|
"items": { "type": "string" },
|
|
"description": "Real-world words to inherit relations from (e.g., ['turtle', 'duck'] for a turtleduck). All parent relations are unioned, with this entity's explicit relations taking priority."
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|