[Home](./index.md) > [@keymanapp/kmc-model](./kmc-model.md) > [LexicalModelSource](./kmc-model.lexicalmodelsource.md) ## LexicalModelSource interface Base interface for a lexical model source definition **Signature:** ```typescript export interface LexicalModelSource extends LexicalModelDeclaration ``` **Extends:** LexicalModelDeclaration ## Properties | Property | Modifiers | Type | Description | | --- | --- | --- | --- | | [applyCasing?](./kmc-model.lexicalmodelsource.applycasing.md) | readonly | CasingFunction |

_(Optional)_ Specifies the casing rules for a language. Should implement three casing forms: - 'lower' -- a fully-lowercased version of the text appropriate for the language's use of the writing system. - 'upper' -- a fully-uppercased version of the text - 'initial' -- a version preserving the input casing aside from the initial character, which is uppercased (like with proper nouns and sentence-initial words in English sentences.)

This is only utilized if languageUsesCasing is defined and set to true. 14.0

| | [languageUsesCasing?](./kmc-model.lexicalmodelsource.languageusescasing.md) | readonly | boolean | _(Optional)_ When set to true, suggestions will attempt to match the case of the input text even if the lexicon entries use a different casing scheme due to search term keying effects. 14.0 | | [punctuation?](./kmc-model.lexicalmodelsource.punctuation.md) | readonly | LexicalModelPunctuation | _(Optional)_ Punctuation and spacing suggested by the model. | | [rootClass?](./kmc-model.lexicalmodelsource.rootclass.md) | readonly | string | _(Optional)_ The name of the type to instantiate (without parameters) as the base object for a custom predictive model. | | [searchTermToKey?](./kmc-model.lexicalmodelsource.searchtermtokey.md) | readonly | [WordformToKeySpec](./kmc-model.wordformtokeyspec.md) | _(Optional)_ How to simplify words, to convert them into simplified search keys This often involves removing accents, lowercasing, etc. | | [sources](./kmc-model.lexicalmodelsource.sources.md) | readonly | Array<string> | | | [wordBreaker?](./kmc-model.lexicalmodelsource.wordbreaker.md) | readonly | [WordBreakerSpec](./kmc-model.wordbreakerspec.md) \| [SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) |

_(Optional)_ Which word breaker to use. Choose from:

- 'default' -- breaks according to Unicode UAX \#29 ยง4.1 Default Word Boundary Specification, which works well for \*most\* languages. - 'ascii' -- a very simple word breaker, for demonstration purposes only. - word breaking function -- provide your own function that breaks words. - class-based word-breaker - may be supported in the future.

|