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
-
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
-
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
-
Evaluacion de sostenibilidad alimentaria
- Calculos de impacto ambiental
- Analisis de huella de carbono
- Puntuacion de sostenibilidad
-
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 productoamount- Cantidadflow_location- Origen geograficoglossary_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 requeridaraw_processing- Metodo de procesamientoraw_production- Metodo de produccionraw_conservation- Metodo de conservacionraw_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 actividadinputs- Flujos de entradaoutputs- 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 globalwater_use- Consumo de agualand_use- Ocupacion del suelobiodiversity_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 recetaingredients- Lista de flujos de ingredientespreparation_steps- Actividades de cocinado/preparacionyield- 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 partidadestination- Punto finalstages- Lista de actividades y flujostotal_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 nutricionalProducer- Informacion del productor/fabricanteSupplier- Detalles del proveedorLocation- Datos de ubicacion geograficaLabel- Informacion de certificaciones y etiquetasProcessingMethod- Detalles del procesamiento de alimentosProductionMethod- Practicas agricolas/de produccionConservationMethod- Almacenamiento y conservacionTransportMode- Metodos de transportePackagingInfo- 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.
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:
| Dominio | Propiedades | Ejemplos |
|---|---|---|
| Identificacion | 2 | Nombre del producto, GTIN |
| Medicion | 3 | Cantidad, Cantidad requerida, Unidad |
| Geografia | 1 | Pais de origen |
| Proceso | 3 | Procesamiento, Produccion, Conservacion |
| Clasificacion | 1 | Categoria del producto |
| Nutricion | 1 | Valores nutricionales |
| Composicion | 1 | Ingredientes |
| Certificacion | 1 | Etiquetas y certificaciones |
| Organizacion | 2 | Productor, Proveedor |
| Temporal | 1 | Duracion 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
-
Usar la propiedad mas especifica
- Preferir propiedades especificas sobre genericas
- Coincidir el dominio con vuestro tipo de datos
- Considerar requisitos de validacion de datos
-
Cabeceras multilingues
- Soportar multiples variantes de idioma
- Normalizar cabeceras antes de la coincidencia
- Coincidencia sin distincion de mayusculas
-
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
- Fuentes de datos - Vision general de las 10 fuentes
- Mapeo semantico - Coincidencia potenciada por inteligencia artificial
- Formatos de datos - Formatos de exportacion
- Referencia de Hestia - Datos de impacto ambiental
- Referencia de FoodEx2 - Clasificacion de alimentos
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