dgraph-io/dgraph · error
empty facetKeys not allowed
Error message
empty facetKeys not allowed
What it means
Returned by parseFacetsRDF while parsing the facet list of an RDF N-Quad: after trimming whitespace, a facet key parsed between '(' and '=' was empty (e.g. '(=value)' or a key made only of spaces). Facet keys must be non-empty strings.
Source
Thrown at chunker/rdf_parser.go:277
func parseFacetsRDF(it *lex.ItemIterator, rnq *api.NQuad) error {
if !it.Next() {
return errors.New("unexpected end of facets")
}
item := it.Item()
if item.Typ != itemLeftRound {
return fmt.Errorf("expected '(' but found %v at facet", item.Val)
}
for it.Next() { // parse one key value pair
// parse key
item = it.Item()
if item.Typ != itemText {
return fmt.Errorf("expected key but found %v", item.Val)
}
facetKey := strings.TrimSpace(item.Val)
if len(facetKey) == 0 {
return errors.New("empty facetKeys not allowed")
}
// parse =
if !it.Next() {
return errors.New("unexpected end of facets")
}
item = it.Item()
if item.Typ != itemEqual {
return fmt.Errorf("expected = after facetKey. Found %v", item.Val)
}
// parse value or empty value
if !it.Next() {
return errors.New("unexpected end of facets")
}
item = it.Item()
facetVal := ""
if item.Typ == itemText {
facetVal = item.Val
}View on GitHub (pinned to 759e242be6)
Solutions
- Give the facet a non-empty key: (score=0.9).
- Fix the generator/template so facet keys are always populated.
- Pre-validate facet pairs client-side, trimming keys and rejecting empties.
Example fix
// before
fmt.Sprintf("(<s-key>%s=0.9)", facetKey) // facetKey == ""
// after
if facetKey == "" { return errors.New("facet key required") }
fmt.Sprintf("(%s=0.9)", facetKey) Defensive patterns
Strategy: validation
Validate before calling
func facetKeysValid(facets map[string]string) bool {
for k := range facets {
if strings.TrimSpace(k) == "" { return false }
}
return true
} Try / catch
if _, err := ParseRDF(line); err != nil {
if err.Error() == "empty facetKeys not allowed" {
return fmt.Errorf("facet key placeholder not filled: %w", err)
}
return err
} Prevention
- Reject empty facet keys in your generator.
- Trim keys and check non-empty before rendering lines.
- Use schema-defined facet names rather than free-form placeholders.
When it happens
Trigger: ParseRDF input where a facet pair's key trims to empty, e.g. '( =0.9)' or a key consisting solely of spaces produced by a generator.
Common situations: Templated facet lists where the key placeholder was empty; whitespace-heavy formatting that separated '=' from a missing key.
Related errors
- NQuad failed sanity check. Subject: %q, Predicate: %q, Objec
- empty variable name in function call
- unexpected end of facets
- expected '(' but found %v at facet
- expected key but found %v
AI-assisted analysis of dgraph-io/dgraph@759e242be6 (2026-09-01).
Data as JSON: /api/errors/ea3dacbd8ec7372f.
Report an issue: GitHub.