From 4f2445bf7163f64e63c269ba858f0e97722a89dc Mon Sep 17 00:00:00 2001 From: "Baima (Hermes Agent)" Date: Fri, 8 May 2026 07:14:10 +0800 Subject: [PATCH] fix: guard against IndexError on empty query string in SPARQL generator Issue #870: query.split() on an empty or whitespace-only string returns an empty list, and accessing [0] raises IndexError. Although the existing startswith guard on line 205 already prevents this in practice (empty strings won't match SPARQL keywords), the direct indexing is fragile. Refactor to split first and check the result before indexing, making the code resilient to future refactoring of the upstream guard. --- trustgraph-flow/trustgraph/query/ontology/sparql_generator.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/trustgraph-flow/trustgraph/query/ontology/sparql_generator.py b/trustgraph-flow/trustgraph/query/ontology/sparql_generator.py index 44c7e0a1..7d25e3ca 100644 --- a/trustgraph-flow/trustgraph/query/ontology/sparql_generator.py +++ b/trustgraph-flow/trustgraph/query/ontology/sparql_generator.py @@ -203,10 +203,12 @@ ASK {{ if response and isinstance(response, dict): query = response.get('query', '').strip() if query.upper().startswith(('SELECT', 'ASK', 'CONSTRUCT', 'DESCRIBE')): + parts = query.split() + query_type = parts[0].upper() if parts else 'UNKNOWN' return SPARQLQuery( query=query, variables=self._extract_variables(query), - query_type=query.split()[0].upper(), + query_type=query_type, explanation=response.get('explanation', 'Generated by LLM'), complexity_score=self._calculate_complexity(query) )