diff --git a/trustgraph-flow/trustgraph/query/ontology/monitoring.py b/trustgraph-flow/trustgraph/query/ontology/monitoring.py index 703c6e95..4b0106fc 100644 --- a/trustgraph-flow/trustgraph/query/ontology/monitoring.py +++ b/trustgraph-flow/trustgraph/query/ontology/monitoring.py @@ -475,8 +475,11 @@ class PerformanceMonitor: cache_types = set() for metric_name in self.metrics_collector.counters.keys(): if 'cache_type=' in metric_name: - cache_type = metric_name.split('cache_type=')[1].split(',')[0].split('}')[0] - cache_types.add(cache_type) + # Safely extract cache_type label value + parts = metric_name.split('cache_type=') + if len(parts) >= 2: + cache_type = parts[1].split(',')[0].split('}')[0] + cache_types.add(cache_type) for cache_type in cache_types: labels = {'cache_type': cache_type} 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) )