Saltar al contenido principal

Referencia del esquema Eaternity

El esquema de Eaternity define el modelo de datos para el Sistema Operativo Ambiental (EOS), la plataforma de Eaternity para la evaluacion de sostenibilidad alimentaria. El glosario ESFC incluye 40 terminos de Eaternity: 24 clases de esquema y 16 terminos de propiedades.

Vision general

Los terminos del esquema de Eaternity proporcionan un mapeo directo entre los datos del usuario y la interfaz de programacion de aplicaciones de EOS, permitiendo la coincidencia semantica de columnas CSV a campos del esquema y soportando la importacion de datos sin configuracion.

Estadisticas clave:

  • Clases del esquema: 24 terminos
  • Terminos de propiedades: 16 terminos
  • Total de terminos: 40
  • Formato: LinkML YAML con contexto JSON-LD
  • Fuente: gitlab.com/eaternity/eos

Proposito y aplicaciones

Casos de uso principales

  1. Mapeo de importacion de datos

    • Coincidencia semantica de columnas CSV del usuario a campos de EOS
    • Reconocimiento y validacion automatica de campos
    • Integracion de datos sin configuracion
  2. Integracion con la interfaz de programacion de aplicaciones

    • Mapeo directo a endpoints de la interfaz de programacion de aplicaciones de EOS
    • Estructuras de datos con seguridad de tipos
    • Validacion del esquema
  3. Evaluacion de sostenibilidad alimentaria

    • Calculos de impacto ambiental
    • Analisis de huella de carbono
    • Puntuacion de sostenibilidad
  4. Investigacion y analisis

    • Modelado de sistemas alimentarios
    • Analisis de cadenas de suministro
    • Desarrollo de metricas de sostenibilidad

Clases del esquema (24 terminos)

Clases principales de flujo

FlowNode

Descripcion: Representa flujos de materiales en el sistema alimentario.

Propiedades clave:

  • product_name - Identificacion del producto
  • amount - Cantidad
  • flow_location - Origen geografico
  • glossary_tags - Categorizacion del producto

Casos de uso:

  • Seguimiento de ingredientes
  • Contabilidad de flujos de materiales
  • Mapeo de cadenas de suministro

Ejemplo:

'@type': FlowNode
product_name: "Harina de trigo organica"
amount: 500
unit: "kg"
flow_location: "CH"
glossary_tags: ["cereal", "trigo", "organico"]

FoodProductFlowNode

Descripcion: Nodo de flujo especializado para productos alimentarios con propiedades adicionales especificas de alimentos.

Extiende: FlowNode

Propiedades adicionales:

  • amount_per_category_required_for_flow - Cantidad requerida
  • raw_processing - Metodo de procesamiento
  • raw_production - Metodo de produccion
  • raw_conservation - Metodo de conservacion
  • raw_labels - Certificaciones y etiquetas

Casos de uso:

  • Analisis del Ciclo de Vida de productos alimentarios
  • Impacto ambiental de recetas
  • Evaluacion de sostenibilidad de ingredientes

Ejemplo:

'@type': FoodProductFlowNode
product_name: "Carne de vacuno alimentado con pasto"
amount: 1000
raw_production: "pasto-extensivo"
raw_labels: ["organico", "alimentado-con-pasto"]
flow_location: "CH"

ActivityNode

Descripcion: Representa actividades de produccion y procesamiento en el sistema alimentario.

Propiedades clave:

  • activity_type - Tipo de actividad (produccion, procesamiento, transporte)
  • activity_location - Donde ocurre la actividad
  • inputs - Flujos de entrada
  • outputs - Flujos de salida

Casos de uso:

  • Modelado de procesos
  • Costes basados en actividades
  • Analisis de cadenas de suministro

Ejemplo:

'@type': ActivityNode
activity_type: "molienda-de-trigo"
activity_location: "CH"
inputs: [flujo-grano-trigo]
outputs: [flujo-harina-trigo]

Clases de evaluacion de impacto

ImpactAssessment

Descripcion: Resultados del calculo de impacto ambiental.

Propiedades clave:

  • gwp_total - Potencial total de calentamiento global
  • water_use - Consumo de agua
  • land_use - Ocupacion del suelo
  • biodiversity_impact - Efectos sobre la biodiversidad

Casos de uso:

  • Informes de huella de carbono
  • Divulgacion de impacto ambiental
  • Puntuacion de sostenibilidad

Ejemplo:

'@type': ImpactAssessment
gwp_total: 2.5 # kg CO2-eq
water_use: 150 # litros
land_use: 0.5 # m2

Clases de gestion de datos

Recipe

Descripcion: Productos alimentarios con multiples ingredientes y metodos de preparacion.

Propiedades clave:

  • recipe_name - Identificador de la receta
  • ingredients - Lista de flujos de ingredientes
  • preparation_steps - Actividades de cocinado/preparacion
  • yield - Cantidad de produccion de la receta

Casos de uso:

  • Huella de carbono de menus
  • Optimizacion de recetas
  • Sostenibilidad en planificacion de comidas

SupplyChain

Descripcion: Cadena de suministro completa desde la granja hasta el tenedor.

Propiedades clave:

  • origin - Punto de partida
  • destination - Punto final
  • stages - Lista de actividades y flujos
  • total_impact - Impacto ambiental agregado

Casos de uso:

  • Analisis del Ciclo de Vida completo de la cadena de suministro
  • Identificacion de puntos criticos
  • Informes de transparencia

Clases auxiliares

Otras clases del esquema incluyen:

  • NutrientValues - Composicion nutricional
  • Producer - Informacion del productor/fabricante
  • Supplier - Detalles del proveedor
  • Location - Datos de ubicacion geografica
  • Label - Informacion de certificaciones y etiquetas
  • ProcessingMethod - Detalles del procesamiento de alimentos
  • ProductionMethod - Practicas agricolas/de produccion
  • ConservationMethod - Almacenamiento y conservacion
  • TransportMode - Metodos de transporte
  • PackagingInfo - Detalles de embalaje
  • Y 8+ clases mas especializadas

Terminos de propiedades (16 terminos)

Los terminos de propiedades representan campos individuales dentro de las clases del esquema, permitiendo la coincidencia semantica granular.

Clasificacion de prioridad

Las propiedades se clasifican por su importancia para la precision del calculo:

  • Alta prioridad: Campos requeridos que impactan significativamente los calculos ambientales (identidad del producto, cantidad, origen)
  • Propiedades estandar: Campos adicionales que refinan los calculos pero tienen valores por defecto razonables

Propiedades de alta prioridad (6 terminos)

Estas propiedades son esenciales para calculos precisos de impacto ambiental:

1. Nombre del producto

ID: eaternity-property-productname Campo Python: product_name Esquema padre: FlowNode Tipo de datos: Cadena Dominio: Identificacion

Ejemplos de uso:

  • Product Name
  • Product
  • Item Name
  • Food Name
  • Name
  • Produktname (aleman)

Ejemplos de valores:

  • "Harina de trigo organica"
  • "Carne de vacuno alimentado con pasto"
  • "Salsa de tomate"

2. Cantidad

ID: eaternity-property-amount Campo Python: amount Esquema padre: FlowNode Tipo de datos: Numerico (con unidad) Dominio: Medicion

Ejemplos de uso:

  • Quantity
  • Amount
  • Weight
  • Mass
  • Volume
  • Menge (aleman)

Ejemplos de valores:

  • 500 (kg)
  • 1.5 (L)
  • 250 (g)

3. Cantidad requerida

ID: eaternity-property-amountpercategoryrequiredforflow Campo Python: amount_per_category_required_for_flow Esquema padre: FoodProductFlowNode Tipo de datos: Numerico Dominio: Medicion

Ejemplos de uso:

  • Required Amount
  • Required Quantity
  • Flow Amount
  • Benotigte Menge (aleman)

4. Pais de origen

ID: eaternity-property-flowlocation Campo Python: flow_location Esquema padre: FlowNode Tipo de datos: Categorico (codigos de pais) Dominio: Geografia

Ejemplos de uso:

  • Origin Country
  • Origin
  • Country
  • Location
  • Herkunftsland (aleman)

Ejemplos de valores:

  • "CH" (Suiza)
  • "DE" (Alemania)
  • "IT" (Italia)

5. Metodo de procesamiento

ID: eaternity-property-rawprocessing Campo Python: raw_processing Esquema padre: FoodProductFlowNode Tipo de datos: Categorico Dominio: Proceso

Ejemplos de uso:

  • Processing
  • Processing Method
  • Processing Type
  • Verarbeitung (aleman)

Ejemplos de valores:

  • "fresh"
  • "frozen"
  • "canned"
  • "dried"

6. Categoria del producto

ID: eaternity-property-glossarytags Campo Python: glossary_tags Esquema padre: FlowNode Tipo de datos: Array de cadenas Dominio: Clasificacion

Ejemplos de uso:

  • Category
  • Type
  • Classification
  • Product Category
  • Kategorie (aleman)

Ejemplos de valores:

  • ["cereal", "trigo", "organico"]
  • ["lacteo", "queso", "duro"]
  • ["carne", "vacuno", "fresco"]

Propiedades de prioridad media (10 terminos)

7. Valores nutricionales

ID: eaternity-property-nutrientvalues Campo Python: nutrient_values Esquema padre: FoodProductFlowNode Dominio: Nutricion

Ejemplos de uso:

  • Nutritional Values
  • Nutrients
  • Nutrition Facts
  • Nahrwerte (aleman)

8. Ingredientes

ID: eaternity-property-ingredientsdeclaration Campo Python: ingredients_declaration Esquema padre: Recipe/FoodProductFlowNode Dominio: Composicion

Ejemplos de uso:

  • Ingredients
  • Ingredient List
  • Components
  • Zutaten (aleman)

9. Metodo de produccion

ID: eaternity-property-rawproduction Campo Python: raw_production Esquema padre: FoodProductFlowNode Dominio: Proceso

Ejemplos de uso:

  • Production
  • Production Method
  • Growing Method
  • Produktion (aleman)

Ejemplos de valores:

  • "organic"
  • "conventional"
  • "greenhouse"
  • "grass-fed"

10. Metodo de conservacion

ID: eaternity-property-rawconservation Campo Python: raw_conservation Esquema padre: FoodProductFlowNode Dominio: Proceso

Ejemplos de uso:

  • Conservation
  • Storage Method
  • Preservation
  • Konservierung (aleman)

Ejemplos de valores:

  • "fresh"
  • "frozen"
  • "refrigerated"
  • "ambient"

11. Etiquetas y certificaciones

ID: eaternity-property-rawlabels Campo Python: raw_labels Esquema padre: FoodProductFlowNode Dominio: Certificacion

Ejemplos de uso:

  • Labels
  • Certifications
  • Quality Marks
  • Label (aleman)

Ejemplos de valores:

  • ["organic", "fair-trade"]
  • ["bio-suisse"]
  • ["eu-organic", "carbon-neutral"]

12. Productor

ID: eaternity-property-producer Campo Python: producer Esquema padre: FoodProductFlowNode Dominio: Organizacion

13. Proveedor

ID: eaternity-property-supplier Campo Python: supplier Esquema padre: FoodProductFlowNode Dominio: Organizacion

14. Codigo del producto (GTIN)

ID: eaternity-property-gtin Campo Python: gtin Esquema padre: FoodProductFlowNode Dominio: Identificacion

Ejemplos de valores:

  • "7610200078753"
  • "4260123456789"

15. Duracion de almacenamiento

ID: eaternity-property-storagetime Campo Python: storage_time Esquema padre: FoodProductFlowNode Dominio: Temporal

16. Unidad

ID: eaternity-property-unit Campo Python: unit Esquema padre: FlowNode Dominio: Medicion

Ejemplos de valores:

  • "kg"
  • "L"
  • "piece"

Flujo de trabajo de coincidencia semantica

De CSV del usuario a interfaz de programacion de aplicaciones de EOS

Los terminos de propiedades de Eaternity permiten el mapeo automatico:

Paso 1: Cabecera de columna CSV del usuario
"Product Name" o "Produktname" o "Item Name"

Paso 2: Busqueda semantica en el glosario ESFC
Encuentra: eaternity-property-productname

Paso 3: Extraer nombre del campo Python
pythonFieldName: "product_name"

Paso 4: Mapear a campo de la interfaz de programacion de aplicaciones de EOS
FlowNode.product_name

Paso 5: Validar y enviar
Datos validados contra el esquema

Ejemplo de importacion CSV

CSV del usuario:

Product Name,Weight,Origin Country,Processing
Organic Tomatoes,500,IT,fresh
Wheat Flour,1000,CH,milled

Coincidencia semantica:

"Product Name" → eaternity-property-productname → FlowNode.product_name
"Weight" → eaternity-property-amount → FlowNode.amount
"Origin Country" → eaternity-property-flowlocation → FlowNode.flow_location
"Processing" → eaternity-property-rawprocessing → FoodProductFlowNode.raw_processing

Carga util de la interfaz de programacion de aplicaciones de EOS:

{
"@type": "FoodProductFlowNode",
"product_name": "Organic Tomatoes",
"amount": 500,
"unit": "kg",
"flow_location": "IT",
"raw_processing": "fresh"
}

Ejemplos de integracion

TypeScript con interfaz de programacion de aplicaciones de EOS

import { Glossary, Term } from './glossary.types'

// Cargar glosario
const glossary: Glossary = await fetch('/glossary.json')
.then(r => r.json())

// Obtener terminos de propiedades de Eaternity
const eosProperties = glossary.terms.filter(t =>
t.source === 'eaternity' &&
t.id.startsWith('eaternity-property-')
)

// Mapear cabecera CSV a campo de EOS
function mapHeaderToEOSField(header: string): string | null {
const normalized = header.toLowerCase().trim()

for (const property of eosProperties) {
const usageExamples = property.properties?.usageExamples || []
if (usageExamples.some(ex =>
ex.toLowerCase() === normalized
)) {
return property.properties?.pythonFieldName || null
}
}

return null
}

// Uso de ejemplo
const headers = ['Product Name', 'Produktname', 'Weight', 'Menge']
headers.forEach(header => {
const field = mapHeaderToEOSField(header)
console.log(`${header}${field}`)
})
// Salida:
// Product Name → product_name
// Produktname → product_name
// Weight → amount
// Menge → amount

Importacion de datos Python

import json
import pandas as pd

# Cargar glosario
with open('glossary.json') as f:
glossary = json.load(f)

# Obtener terminos de propiedades de EOS
eos_properties = [
t for t in glossary['terms']
if t['source'] == 'eaternity' and
t['id'].startswith('eaternity-property-')
]

# Construir diccionario de mapeo
header_to_field = {}
for prop in eos_properties:
python_field = prop.get('properties', {}).get('pythonFieldName')
if python_field:
examples = prop.get('properties', {}).get('usageExamples', [])
for example in examples:
header_to_field[example.lower()] = python_field

# Mapear CSV del usuario
user_df = pd.read_csv('user_data.csv')
mapped_columns = {}

for col in user_df.columns:
eos_field = header_to_field.get(col.lower())
if eos_field:
mapped_columns[col] = eos_field
print(f"Mapeado: {col}{eos_field}")

# Renombrar columnas para la interfaz de programacion de aplicaciones de EOS
eos_df = user_df.rename(columns=mapped_columns)

Consultas SQL

-- Obtener todos los terminos de propiedades de Eaternity
SELECT id, name, properties->>'pythonFieldName' as python_field,
properties->>'domain' as domain,
properties->>'priority' as priority
FROM terms
WHERE source = 'eaternity'
AND id LIKE 'eaternity-property-%'
ORDER BY priority, domain;

-- Encontrar propiedad por ejemplo de uso
SELECT id, name, properties->>'pythonFieldName' as python_field
FROM terms
WHERE source = 'eaternity'
AND properties->>'usageExamples' LIKE '%Weight%'
OR properties->>'usageExamples' LIKE '%Menge%';

-- Obtener propiedades de alta prioridad
SELECT id, name, properties
FROM terms
WHERE source = 'eaternity'
AND id LIKE 'eaternity-property-%'
AND properties->>'priority' = 'high';

Dominios de propiedades

Las propiedades estan organizadas por dominio para una mejor categorizacion:

DominioPropiedadesEjemplos
Identificacion2Nombre del producto, GTIN
Medicion3Cantidad, Cantidad requerida, Unidad
Geografia1Pais de origen
Proceso3Procesamiento, Produccion, Conservacion
Clasificacion1Categoria del producto
Nutricion1Valores nutricionales
Composicion1Ingredientes
Certificacion1Etiquetas y certificaciones
Organizacion2Productor, Proveedor
Temporal1Duracion de almacenamiento

Soporte multilingue

Los terminos de propiedades incluyen ejemplos de uso en multiples idiomas:

Ingles:

  • Product Name
  • Quantity
  • Origin Country

Aleman:

  • Produktname
  • Menge
  • Herkunftsland

Expansion futura:

  • Frances (Nom du produit, Quantite, Pays d'origine)
  • Italiano (Nome prodotto, Quantita, Paese di origine)
  • Espanol (Nombre del producto, Cantidad, Pais de origen)

Mejores practicas

Seleccion de propiedades

  1. Usar la propiedad mas especifica

    • Preferir propiedades especificas sobre genericas
    • Coincidir el dominio con vuestro tipo de datos
    • Considerar requisitos de validacion de datos
  2. Cabeceras multilingues

    • Soportar multiples variantes de idioma
    • Normalizar cabeceras antes de la coincidencia
    • Coincidencia sin distincion de mayusculas
  3. Validacion

    • Verificar tipos de datos esperados
    • Validar valores categoricos
    • Asegurar consistencia de unidades

Calidad de datos

Completitud:

  • Incluir todas las propiedades requeridas
  • Proporcionar propiedades opcionales cuando esten disponibles
  • Documentar datos faltantes

Consistencia:

  • Usar valores estandarizados para campos categoricos
  • Aplicar unidades consistentes
  • Seguir las directrices de calidad de datos de EOS

Trazabilidad:

  • Registrar decisiones de mapeo
  • Enlazar a datos fuente
  • Documentar transformaciones

Version y actualizaciones

Version actual: Sincronizada con la version de EOS Metodo de actualizacion: Extraccion manual del esquema de EOS Frecuencia de actualizacion: Con cada version mayor de EOS

Proceso de extraccion

# Analizar esquema de Eaternity
npm run parse:eaternity

# Genera:
# - output/eaternity/processed/terms.yaml (24 clases de esquema)
# - output/eaternity/processed/property-terms.yaml (16 propiedades)

# Construir glosario completo
npm run build

Recursos

Recursos del esquema de EOS

  • Repositorio GitLab: gitlab.com/eaternity/eos
  • Definicion del esquema: Definiciones de clases Python
  • Documentacion de la interfaz de programacion de aplicaciones: Referencia de la interfaz de programacion de aplicaciones de EOS
  • Descripciones de campos: Documentacion en linea

Recursos del glosario ESFC

  • 40 terminos de Eaternity (24 clases + 16 propiedades)
  • Coincidencia semantica para importacion CSV
  • Mapeo directo a la interfaz de programacion de aplicaciones via pythonFieldName
  • Tipos TypeScript para integracion

Mejoras futuras

Expansion de fase 3

Propiedades adicionales (50-100+ terminos):

  • Todos los campos restantes de FlowNode (~10 mas)
  • Propiedades completas de ActivityNode (~20 mas)
  • Campos de propiedades anidadas (subcampos de nutrientes)
  • Propiedades de evaluacion de impacto

Descripciones mejoradas:

  • Mas variaciones multilingues (frances, italiano, espanol)
  • Reglas de validacion de datos
  • Rangos de valores esperados
  • Enlaces a mapeos de FoodEx2/Hestia

Integracion con la interfaz de programacion de aplicaciones:

  • Generacion de esquemas OpenAPI
  • Validadores de solicitudes
  • Generadores de campos de formulario
  • Documentacion automatica

Documentacion relacionada

Licencia

Licencia: Propietaria (Eaternity) Uso: Terminos del esquema de EOS disponibles como referencia Integracion: Gratuito para usuarios de la interfaz de programacion de aplicaciones de EOS Esquema completo: Requiere licencia de EOS