OrjsonKnowledgeRepository

Guía de uso completa para gestión de conocimiento persistente

Configuración Básica

Primero, asegúrate de tener instalada la librería orjson en tu entorno. Luego, inicializa el repositorio especificando una ruta de almacenamiento.
Python
from capsula.adapters.OrjsonKnowledgeRepository import OrjsonKnowledgeRepository
from capsula.core import Entry, Relation

# Initialize the repository (defaults to ./data/codex)
repo = OrjsonKnowledgeRepository(storage_path="./my_knowledge_base")
💡 Nota: El repositorio maneja automáticamente la serialización de dataclasses de Python y objetos datetime.

Guardar y Recuperar Entradas

El repositorio maneja automáticamente la serialización de dataclasses de Python y objetos datetime.
Python
# Create a new entry
new_note = Entry(
    title="Atomic Habits",
    content="Small changes lead to remarkable results.",
    tags=["productivity", "books"]
)

# Persist to disk
repo.save(new_note)

# Retrieve by ID
retrieved_note = repo.get_by_id(new_note.id)
print(f"Loaded: {retrieved_note.title}")

Gestionar Relaciones

Las relaciones se almacenan en un archivo dedicado relations.json dentro de tu directorio de almacenamiento.
Python
# Create a second entry
another_note = Entry(title="Deep Work", content="Focus without distraction.")
repo.save(another_note)

# Create a relationship between them
link = Relation(
    from_id=new_note.id, 
    to_id=another_note.id, 
    connection_type="related_reading"
)

# Save the relation
repo.add_relation(link)

# Remove a specific relation
# repo.remove_relation(link)

Buscar y Eliminar

Puedes filtrar entradas por etiquetas o eliminarlas por completo. Al eliminar una entrada, se limpian automáticamente las relaciones asociadas.
Python
# Find all entries with the 'productivity' tag
productivity_notes = repo.find_by_tag("productivity")

# Delete an entry (this removes the .json file and cleans relations.json)
success = repo.delete(new_note.id)
if success:
    print("Entry and its relations successfully removed.")
⚠️ Importante: La eliminación de una entrada también elimina automáticamente todas las relaciones asociadas para mantener la integridad de los datos.

Características Principales

  • ✅ Serialización automática de dataclasses y objetos datetime
  • ✅ Almacenamiento persistente en archivos JSON
  • ✅ Gestión automática de relaciones entre entradas
  • ✅ Búsqueda por etiquetas (tags)
  • ✅ Limpieza automática de relaciones al eliminar entradas
  • ✅ Alto rendimiento gracias a la librería orjson