Spaces:
Sleeping
Sleeping
| import sqlite3 | |
| import time | |
| from typing import List, Dict, Any, Optional | |
| from functools import lru_cache | |
| from src.knowledge.repository import KnowledgeRepository | |
| class KnowledgeEngine: | |
| def __init__(self, db_path: str = "data/knowledge/build/knowledge.db"): | |
| self.repo = KnowledgeRepository(db_path) | |
| self.repo.connect() | |
| def get_entity_knowledge(self, entity_id: str) -> Optional[List[Dict[str, Any]]]: | |
| """ | |
| Retrieves canonical visual traits for a given entity_id. | |
| Uses LRU Cache to maintain <1ms latency for repeated requests. | |
| """ | |
| cursor = self.repo._conn.cursor() | |
| # We assume entity_id is already resolved to its canonical representation by the intent parser | |
| # Querying the visual traits | |
| cursor.execute(""" | |
| SELECT t.trait_id, t.confidence, t.source_count, p.source_uri | |
| FROM entity_visual_traits t | |
| LEFT JOIN trait_provenance p ON t.entity_id = p.entity_id AND t.trait_id = p.trait_id | |
| WHERE t.entity_id = ? | |
| """, (entity_id,)) | |
| rows = cursor.fetchall() | |
| if not rows: | |
| return None | |
| traits = [] | |
| for row in rows: | |
| traits.append({ | |
| "trait_id": row["trait_id"], | |
| "confidence": row["confidence"], | |
| "source_count": row["source_count"], | |
| "provenance": row["source_uri"] | |
| }) | |
| return traits | |
| def close(self): | |
| self.repo.close() | |