|
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 []
|
|
|