{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "znote language",
"description": "What znote needs to know about one language to find names in it. Add a file named after the language code to support another language.",
"type": "object",
"additionalProperties": false,
"required": [
"code",
"name",
"stopwords",
"suffixes",
"prefixes",
"sentenceEnds",
"scaleWords",
"phoneTrunks"
],
"properties": {
"$schema": {
"type": "string"
},
"code": {
"type": "string",
"pattern": "^[a-z]{2,3}(-[A-Za-z0-9]+)?$",
"description": "BCP 47 language code, the same as the file name."
},
"name": {
"type": "string",
"description": "The language's own name."
},
"stopwords": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Lower-case words that are never a name on their own, even when the name finder tags them at the start of a sentence."
},
"suffixes": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Endings a name can carry in running text (\"Acmes\", \"Rotterdamse\"). They are hidden together with the name."
},
"prefixes": {
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true,
"description": "Beginnings written onto a name in running text, such as attached articles. They are hidden together with the name."
},
"sentenceEnds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true,
"description": "What ends a sentence, so one hit of the name finder is not read across two sentences."
},
"scaleWords": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"uniqueItems": true,
"description": "Words or letters that scale an amount, such as \"k\" or \"miljoen\"."
},
"phoneTrunks": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]+$"
},
"uniqueItems": true,
"description": "The digits a national phone number starts with, such as \"0\"."
}
}
}