# LDC-E8204 — Predicate template placeholder is not a name ## What it means A relation label can carry one predicate template: a sentence with placeholders for the relation parameters, so that readers see the same phrase the rule uses. A placeholder is always a bare parameter name in braces, such as `{amount}`. Anything else in braces — a number, a form with a colon, or an expression — is not a placeholder the engine can fill, so the compiler stops at the template and asks for plain names. Repetition is fine and extra text around the placeholders is fine; only the inside of each brace pair must be exactly one parameter name. ## Example ```law language "law.core" version "0.2"; package demo.diag version "0.1.0"; namespace "urn:law:demo:diag"; entity C { label ru-KZ official "C"; } relation r(a: C, b: C) kind empirical { label ru-KZ official "r" { template "{1} {a} {b}"; } } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diag version "0.1.0"; namespace "urn:law:demo:diag"; entity C { label ru-KZ official "C"; } relation r(a: C, b: C) kind empirical { label ru-KZ official "r" { template "{a} and {b}"; } } ``` ## Engine message The engine reports this in its own wording: ```text example.law:7:32: error LDC-E8204: placeholder {1} is not a parameter name: positional references, forms and expressions are not supported in the predicate template (§218.2) ``` ## Related - [Vocabulary](/constructs/vocabulary/) — how names are declared and which positions take them.