from rdflib import Graph, Namespace, URIRef from typing import List, Dict import logging class BaseAgent: def __init__(self, rdf_graph: Graph, namespace: Namespace): self.graph = rdf_graph self.ns = namespace logging.debug("BaseAgent initialized.") def query_ontology(self, query: str) -> List[Dict[str, str]]: """Execute a SPARQL query and return results as a list of dictionaries.""" try: results = self.graph.query(query) logging.debug(f"Executing query: {query}") return [ {"drug1": str(row[0]).split('#')[-1], "drug2": str(row[1]).split('#')[-1]} for row in results ] except Exception as e: logging.error(f"Error executing query: {e}") return []