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 evaluación de sostenibilidad alimentaria. El glosario ESFC incluye 40 términos de Eaternity: 24 clases de esquema y 16 términos de propiedades.
Visión general
Los términos del esquema de Eaternity proporcionan un mapeo directo entre los datos del usuario y la interfaz de programación de aplicaciones de EOS, permitiendo la coincidencia semántica de columnas CSV a campos del esquema y soportando la importación de datos sin configuración.
Estadísticas clave:
- Clases del esquema: 24 términos
- Términos de propiedades: 16 términos
- Total de términos: 40
- Formato: LinkML YAML con contexto JSON-LD
- Fuente: gitlab.com/eaternity/eos
Propósito y aplicaciones
Casos de uso principales
-
Mapeo de importación de datos
- Coincidencia semántica de columnas CSV del usuario a campos de EOS
- Reconocimiento y validación automática de campos
- Integración de datos sin configuración
-
Integración con la interfaz de programación de aplicaciones
- Mapeo directo a endpoints de la interfaz de programación de aplicaciones de EOS
- Estructuras de datos con seguridad de tipos
- Validación del esquema
-
Evaluación de sostenibilidad alimentaria
- Cálculos de impacto ambiental
- Análisis de huella de carbono
- Puntuación de sostenibilidad
-
Investigación y análisis
- Modelado de sistemas alimentarios
- Análisis de cadenas de suministro
- Desarrollo de métricas de sostenibilidad
Clases del esquema (24 términos)
Clases principales de flujo
FlowNode
Descripción: Representa flujos de materiales en el sistema alimentario.
Propiedades clave:
product_name- Identificación del productoamount- Cantidadflow_location- Origen geográficoglossary_tags- Categorización 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
Descripción: Nodo de flujo especializado para productos alimentarios con propiedades adicionales específicas de alimentos.
Extiende: FlowNode
Propiedades adicionales:
amount_per_category_required_for_flow- Cantidad requeridaraw_processing- Método de procesamientoraw_production- Método de producciónraw_conservation- Método de conservaciónraw_labels- Certificaciones y etiquetas
Casos de uso:
- Análisis del Ciclo de Vida de productos alimentarios
- Impacto ambiental de recetas
- Evaluación 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
Descripción: Representa actividades de producción y procesamiento en el sistema alimentario.
Propiedades clave:
activity_type- Tipo de actividad (producción, procesamiento, transporte)activity_location- Donde ocurre la actividadinputs- Flujos de entradaoutputs- Flujos de salida
Casos de uso:
- Modelado de procesos
- Costes basados en actividades
- Análisis 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 evaluación de impacto
ImpactAssessment
Descripción: Resultados del cálculo de impacto ambiental.
Propiedades clave:
gwp_total- Potencial total de calentamiento globalwater_use- Consumo de agualand_use- Ocupación del suelobiodiversity_impact- Efectos sobre la biodiversidad
Casos de uso:
- Informes de huella de carbono
- Divulgación de impacto ambiental
- Puntuación de sostenibilidad
Ejemplo:
'@type': ImpactAssessment
gwp_total: 2.5 # kg CO2-eq
water_use: 150 # litros
land_use: 0.5 # m2
Clases de gestión de datos
Recipe
Descripción: Productos alimentarios con múltiples ingredientes y métodos de preparación.
Propiedades clave:
recipe_name- Identificador de la recetaingredients- Lista de flujos de ingredientespreparation_steps- Actividades de cocinado/preparaciónyield- Cantidad de producción de la receta
Casos de uso:
- Huella de carbono de menús
- Optimización de recetas
- Sostenibilidad en planificación de comidas
SupplyChain
Descripción: 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:
- Análisis del Ciclo de Vida completo de la cadena de suministro
- Identificación de puntos críticos
- Informes de transparencia
Clases auxiliares
Otras clases del esquema incluyen:
NutrientValues- Composición nutricionalProducer- Información del productor/fabricanteSupplier- Detalles del proveedorLocation- Datos de ubicación geográficaLabel- Información de certificaciones y etiquetasProcessingMethod- Detalles del procesamiento de alimentosProductionMethod- Prácticas agrícolas/de producciónConservationMethod- Almacenamiento y conservaciónTransportMode- Métodos de transportePackagingInfo- Detalles de embalaje- Y 8+ clases más especializadas
Términos de propiedades (16 términos)
Los términos de propiedades representan campos individuales dentro de las clases del esquema, permitiendo la coincidencia semántica granular.
Las propiedades se clasifican por su importancia para la precisión del cálculo:
- Alta prioridad: Campos requeridos que impactan significativamente los cálculos ambientales (identidad del producto, cantidad, origen)
- Propiedades estándar: Campos adicionales que refinan los cálculos pero tienen valores por defecto razonables
Propiedades de alta prioridad (6 términos)
Estas propiedades son esenciales para cálculos precisos de impacto ambiental:
1. Nombre del producto
ID: eaternity-property-productname
Campo Python: product_name
Esquema padre: FlowNode
Tipo de datos: Cadena
Dominio: Identificación
Ejemplos de uso:
- Product Name
- Product
- Item Name
- Food Name
- Name
- Produktname (alemán)
Ejemplos de valores:
- "Harina de trigo orgánica"
- "Carne de vacuno alimentado con pasto"
- "Salsa de tomate"
2. Cantidad
ID: eaternity-property-amount
Campo Python: amount
Esquema padre: FlowNode
Tipo de datos: Numérico (con unidad)
Dominio: Medición
Ejemplos de uso:
- Quantity
- Amount
- Weight
- Mass
- Volume
- Menge (alemán)
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: Numérico
Dominio: Medición
Ejemplos de uso:
- Required Amount
- Required Quantity
- Flow Amount
- Benotigte Menge (alemán)
4. País de origen
ID: eaternity-property-flowlocation
Campo Python: flow_location
Esquema padre: FlowNode
Tipo de datos: Categorico (códigos de país)
Dominio: Geografía
Ejemplos de uso:
- Origin Country
- Origin
- Country
- Location
- Herkunftsland (alemán)
Ejemplos de valores:
- "CH" (Suiza)
- "DE" (Alemania)
- "IT" (Italia)
5. Método 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 (alemán)
Ejemplos de valores:
- "fresh"
- "frozen"
- "canned"
- "dried"
6. Categoría del producto
ID: eaternity-property-glossarytags
Campo Python: glossary_tags
Esquema padre: FlowNode
Tipo de datos: Array de cadenas
Dominio: Clasificación
Ejemplos de uso:
- Category
- Type
- Classification
- Product Category
- Kategorie (alemán)
Ejemplos de valores:
- ["cereal", "trigo", "orgánico"]
- ["lácteo", "queso", "duro"]
- ["carne", "vacuno", "fresco"]
Propiedades de prioridad media (10 términos)
7. Valores nutricionales
ID: eaternity-property-nutrientvalues
Campo Python: nutrient_values
Esquema padre: FoodProductFlowNode
Dominio: Nutrición
Ejemplos de uso:
- Nutritional Values
- Nutrients
- Nutrition Facts
- Nahrwerte (alemán)
8. Ingredientes
ID: eaternity-property-ingredientsdeclaration
Campo Python: ingredients_declaration
Esquema padre: Recipe/FoodProductFlowNode
Dominio: Composición
Ejemplos de uso:
- Ingredients
- Ingredient List
- Components
- Zutaten (alemán)
9. Método de producción
ID: eaternity-property-rawproduction
Campo Python: raw_production
Esquema padre: FoodProductFlowNode
Dominio: Proceso
Ejemplos de uso:
- Production
- Production Method
- Growing Method
- Produktion (alemán)
Ejemplos de valores:
- "organic"
- "conventional"
- "greenhouse"
- "grass-fed"
10. Método de conservación
ID: eaternity-property-rawconservation
Campo Python: raw_conservation
Esquema padre: FoodProductFlowNode
Dominio: Proceso
Ejemplos de uso:
- Conservation
- Storage Method
- Preservation
- Konservierung (alemán)
Ejemplos de valores:
- "fresh"
- "frozen"
- "refrigerated"
- "ambient"
11. Etiquetas y certificaciones
ID: eaternity-property-rawlabels
Campo Python: raw_labels
Esquema padre: FoodProductFlowNode
Dominio: Certificación
Ejemplos de uso:
- Labels
- Certifications
- Quality Marks
- Label (alemán)
Ejemplos de valores:
- ["organic", "fair-trade"]
- ["bio-suisse"]
- ["eu-organic", "carbón-neutral"]
12. Productor
ID: eaternity-property-producer
Campo Python: producer
Esquema padre: FoodProductFlowNode
Dominio: Organización
13. Proveedor
ID: eaternity-property-supplier
Campo Python: supplier
Esquema padre: FoodProductFlowNode
Dominio: Organización
14. Código del producto (GTIN)
ID: eaternity-property-gtin
Campo Python: gtin
Esquema padre: FoodProductFlowNode
Dominio: Identificación
Ejemplos de valores:
- "7610200078753"
- "4260123456789"
15. Duración 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: Medición
Ejemplos de valores:
- "kg"
- "L"
- "piece"
Flujo de trabajo de coincidencia semántica
De CSV del usuario a interfaz de programación de aplicaciones de EOS
Los términos de propiedades de Eaternity permiten el mapeo automático:
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 importación CSV
CSV del usuario:
Product Name,Weight,Origin Country,Processing
Organic Tomatoes,500,IT,fresh
Wheat Flour,1000,CH,milled
Coincidencia semántica:
"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 útil de la interfaz de programación de aplicaciones de EOS:
{
"@type": "FoodProductFlowNode",
"product_name": "Organic Tomatoes",
"amount": 500,
"unit": "kg",
"flow_location": "IT",
"raw_processing": "fresh"
}
Ejemplos de integración
TypeScript con interfaz de programación 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
Importación 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 están organizadas por dominio para una mejor categorización:
| Dominio | Propiedades | Ejemplos |
|---|---|---|
| Identificación | 2 | Nombre del producto, GTIN |
| Medición | 3 | Cantidad, Cantidad requerida, Unidad |
| Geografía | 1 | País de origen |
| Proceso | 3 | Procesamiento, Producción, Conservación |
| Clasificación | 1 | Categoría del producto |
| Nutrición | 1 | Valores nutricionales |
| Composición | 1 | Ingredientes |
| Certificación | 1 | Etiquetas y certificaciones |
| Organización | 2 | Productor, Proveedor |
| Temporal | 1 | Duración de almacenamiento |
Soporte multilingüe
Los términos de propiedades incluyen ejemplos de uso en múltiples idiomas:
Inglés:
- Product Name
- Quantity
- Origin Country
Alemán:
- Produktname
- Menge
- Herkunftsland
Expansion futura:
- Francés (Nom du produit, Quantite, Pays d'origine)
- Italiano (Nome prodotto, Quantita, Paese di origine)
- Español (Nombre del producto, Cantidad, País de origen)
Mejores prácticas
Selección de propiedades
-
Usar la propiedad más específica
- Preferir propiedades específicas sobre genéricas
- Coincidir el dominio con vuestro tipo de datos
- Considerar requisitos de validación de datos
-
Cabeceras multilingües
- Soportar múltiples variantes de idioma
- Normalizar cabeceras antes de la coincidencia
- Coincidencia sin distinción de mayúsculas
-
Validación
- 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 estén 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
Versión y actualizaciones
Versión actual: Sincronizada con la versión de EOS Método de actualización: Extracción manual del esquema de EOS Frecuencia de actualización: Con cada versión mayor de EOS
Proceso de extracción
# 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
- Definición del esquema: Definiciones de clases Python
- Documentación de la interfaz de programación de aplicaciones: Referencia de la interfaz de programación de aplicaciones de EOS
- Descripciones de campos: Documentación en línea
Recursos del glosario ESFC
- 40 términos de Eaternity (24 clases + 16 propiedades)
- Coincidencia semántica para importación CSV
- Mapeo directo a la interfaz de programación de aplicaciones vía pythonFieldName
- Tipos TypeScript para integración
Mejoras futuras
Expansion de fase 3
Propiedades adicionales (50-100+ términos):
- Todos los campos restantes de FlowNode (~10 más)
- Propiedades completas de ActivityNode (~20 más)
- Campos de propiedades anidadas (subcampos de nutrientes)
- Propiedades de evaluación de impacto
Descripciones mejoradas:
- Mas variaciones multilingües (francés, italiano, español)
- Reglas de validación de datos
- Rangos de valores esperados
- Enlaces a mapeos de FoodEx2/Hestia
Integración con la interfaz de programación de aplicaciones:
- Generación de esquemas OpenAPI
- Validadores de solicitudes
- Generadores de campos de formulario
- Documentación automática
Documentación relacionada
- Fuentes de datos - Visión general de las 10 fuentes
- Mapeo semántico - Coincidencia potenciada por inteligencia artificial
- Formatos de datos - Formatos de exportación
- Referencia de Hestia - Datos de impacto ambiental
- Referencia de FoodEx2 - Clasificación de alimentos
Licencia
Licencia: Propietaria (Eaternity) Uso: Términos del esquema de EOS disponibles como referencia Integración: Gratuito para usuarios de la interfaz de programación de aplicaciones de EOS Esquema completo: Requiere licencia de EOS