fix: guard against IndexError on empty query string in SPARQL generator

When query.split() returns an empty list (which can happen if the
query is empty or whitespace-only), indexing with [0] raises an
IndexError. Extract the split result first and guard against an
empty list before accessing the first element.

Fixes #870
This commit is contained in:
forhim007 2026-05-07 21:08:45 +08:00
parent fe542b3d33
commit e4d9c53d7b

View file

@ -203,10 +203,12 @@ ASK {{
if response and isinstance(response, dict): if response and isinstance(response, dict):
query = response.get('query', '').strip() query = response.get('query', '').strip()
if query.upper().startswith(('SELECT', 'ASK', 'CONSTRUCT', 'DESCRIBE')): if query.upper().startswith(('SELECT', 'ASK', 'CONSTRUCT', 'DESCRIBE')):
parts = query.split()
query_type = parts[0].upper() if parts else 'SELECT'
return SPARQLQuery( return SPARQLQuery(
query=query, query=query,
variables=self._extract_variables(query), variables=self._extract_variables(query),
query_type=query.split()[0].upper(), query_type=query_type,
explanation=response.get('explanation', 'Generated by LLM'), explanation=response.get('explanation', 'Generated by LLM'),
complexity_score=self._calculate_complexity(query) complexity_score=self._calculate_complexity(query)
) )