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 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

  1. 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
  2. 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
  3. Evaluación de sostenibilidad alimentaria

    • Cálculos de impacto ambiental
    • Análisis de huella de carbono
    • Puntuación de sostenibilidad
  4. 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 producto
  • amount - Cantidad
  • flow_location - Origen geográfico
  • glossary_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 requerida
  • raw_processing - Método de procesamiento
  • raw_production - Método de producción
  • raw_conservation - Método de conservación
  • raw_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 actividad
  • inputs - Flujos de entrada
  • outputs - 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 global
  • water_use - Consumo de agua
  • land_use - Ocupación del suelo
  • biodiversity_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 receta
  • ingredients - Lista de flujos de ingredientes
  • preparation_steps - Actividades de cocinado/preparación
  • yield - 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 partida
  • destination - Punto final
  • stages - Lista de actividades y flujos
  • total_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 nutricional
  • Producer - Información del productor/fabricante
  • Supplier - Detalles del proveedor
  • Location - Datos de ubicación geográfica
  • Label - Información de certificaciones y etiquetas
  • ProcessingMethod - Detalles del procesamiento de alimentos
  • ProductionMethod - Prácticas agrícolas/de producción
  • ConservationMethod - Almacenamiento y conservación
  • TransportMode - Métodos de transporte
  • PackagingInfo - 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.

Clasificación de prioridad

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:

DominioPropiedadesEjemplos
Identificación2Nombre del producto, GTIN
Medición3Cantidad, Cantidad requerida, Unidad
Geografía1País de origen
Proceso3Procesamiento, Producción, Conservación
Clasificación1Categoría del producto
Nutrición1Valores nutricionales
Composición1Ingredientes
Certificación1Etiquetas y certificaciones
Organización2Productor, Proveedor
Temporal1Duració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

  1. 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
  2. Cabeceras multilingües

    • Soportar múltiples variantes de idioma
    • Normalizar cabeceras antes de la coincidencia
    • Coincidencia sin distinción de mayúsculas
  3. 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

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