docs← Back to article

Markdown for LLMs

LDC-E8205 — Placeholder names no relation parameter

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# LDC-E8205 — Placeholder names no relation parameter

## What it means

Every placeholder in a predicate template must name one of the
parameters of the relation the label belongs to. A placeholder that
names nothing — a typo, a renamed parameter, or a word from a different
relation — leaves a hole the engine cannot fill, so the compiler stops
at the template and lists the parameters that are actually available.

Renaming the placeholder to one of the listed parameters is the whole
fix; the surrounding sentence never needs to change.

## 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 "{a} {b} {c}"; }
}
```

## 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-E8205: placeholder {c} names no relation parameter; parameters: a, b (§218.2)
```

## Related

- [Vocabulary](/constructs/vocabulary/) — how names are declared and which positions take them.