"""
Knowledge Graph - Store and query facts
"""

class KnowledgeGraph:
    def __init__(self):
        self.facts = []
        self.relationships = {}
    
    def add_fact(self, subject, predicate, object):
        """Add a fact to knowledge base"""
        fact = {"subject": subject, "predicate": predicate, "object": object}
        self.facts.append(fact)
        
        if subject not in self.relationships:
            self.relationships[subject] = []
        self.relationships[subject].append((predicate, object))
        
        return True
    
    def query(self, subject=None, predicate=None):
        """Query knowledge base"""
        results = []
        for fact in self.facts:
            if subject and fact["subject"] != subject:
                continue
            if predicate and fact["predicate"] != predicate:
                continue
            results.append(fact)
        return results
    
    def get_stats(self):
        return {"facts": len(self.facts), "entities": len(self.relationships)}

if __name__ == "__main__":
    kg = KnowledgeGraph()
    kg.add_fact("Eden", "is", "AGI")
    kg.add_fact("Eden", "can", "use tools")
    kg.add_fact("Phase1", "status", "complete")
    
    print("Knowledge Graph Stats:", kg.get_stats())
    print("Facts about Eden:", kg.query(subject="Eden"))
