---
name: entity_node
lang: py
domain: core
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class EntityNode:
      uuid: str
      name: str
      labels: list[str] = field(default_factory=list)
      summary: str = ""
      attributes: dict = field(default_factory=dict)
      related_edges: list[dict] = field(default_factory=list)
      related_nodes: list[dict] = field(default_factory=list)
description: "Nodo de entidad extraido de un knowledge graph. Contiene la identidad, tipo(s), atributos y relaciones de una entidad. Generico — no acoplado a Zep o ningun graph DB especifico."
tags: [entity, graph, knowledge-graph, node, core]
uses_types: []
file_path: "python/types/core/entity_node.py"
---

## Metodos

- `to_dict() -> dict` — serializa el nodo a un diccionario con todos sus campos.
- `get_entity_type() -> str | None` — retorna el primer label que no sea "Entity", o None si todos son genericos.

## Ejemplo

```python
from entity_node import EntityNode

node = EntityNode(
    uuid="abc-123",
    name="Alan Turing",
    labels=["Person", "Professor"],
    summary="Matematico y pionero de la computacion.",
    attributes={"born": 1912, "nationality": "British"},
)

print(node.get_entity_type())  # "Person"
print(node.to_dict())
```

## Notas

El campo `labels` puede contener multiples etiquetas de tipo (e.g., ["Person", "Professor"]). `get_entity_type()` retorna el primer label no-generico para usarlo como tipo principal de la entidad. Los campos `related_edges` y `related_nodes` almacenan relaciones como dicts crudos para maxima flexibilidad sin acoplamiento a un schema especifico.
