Markdown for LLMs
LDC-E8204 — Predicate template placeholder is not a name
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# 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.