Passa al contenuto principale

Riferimento Schema Eaternity

Lo schema Eaternity definisce il modello dati per l'Environmental Operating System (EOS), la piattaforma Eaternity per la valutazione della sostenibilita alimentare. Il Glossario ESFC include 40 termini Eaternity: 24 classi di schema e 16 termini di proprieta.

Panoramica

I termini dello schema Eaternity forniscono una mappatura diretta tra i dati dell'utente e l'API EOS, abilitando l'abbinamento semantico delle colonne CSV ai campi dello schema e supportando l'importazione dati senza configurazione.

Statistiche Chiave:

  • Classi di Schema: 24 termini
  • Termini di Proprieta: 16 termini
  • Termini Totali: 40
  • Formato: LinkML YAML con contesto JSON-LD
  • Fonte: gitlab.com/eaternity/eos

Scopo e Applicazioni

Casi d'Uso Principali

  1. Mappatura dell'Importazione Dati

    • Abbinamento semantico delle colonne CSV utente ai campi EOS
    • Riconoscimento e validazione automatica dei campi
    • Integrazione dati senza configurazione
  2. Integrazione API

    • Mappatura diretta agli endpoint dell'API EOS
    • Strutture dati type-safe
    • Validazione dello schema
  3. Valutazione della Sostenibilita Alimentare

    • Calcoli dell'impatto ambientale
    • Analisi dell'impronta di carbonio
    • Punteggio di sostenibilita
  4. Ricerca e Analisi

    • Modellazione dei sistemi alimentari
    • Analisi della catena di approvvigionamento
    • Sviluppo di metriche di sostenibilita

Classi di Schema (24 Termini)

Classi Core per i Flussi

FlowNode

Descrizione: Rappresenta i flussi di materiali nel sistema alimentare.

Proprieta Chiave:

  • product_name - Identificazione del prodotto
  • amount - Quantita
  • flow_location - Origine geografica
  • glossary_tags - Categorizzazione del prodotto

Casi d'Uso:

  • Tracciamento degli ingredienti
  • Contabilita dei flussi di materiali
  • Mappatura della catena di approvvigionamento

Esempio:

'@type': FlowNode
product_name: "Farina di Grano Biologica"
amount: 500
unit: "kg"
flow_location: "CH"
glossary_tags: ["cereali", "grano", "biologico"]

FoodProductFlowNode

Descrizione: Nodo di flusso specializzato per prodotti alimentari con proprieta aggiuntive specifiche per gli alimenti.

Estende: FlowNode

Proprieta Aggiuntive:

  • amount_per_category_required_for_flow - Quantita richiesta
  • raw_processing - Metodo di lavorazione
  • raw_production - Metodo di produzione
  • raw_conservation - Metodo di conservazione
  • raw_labels - Certificazioni e etichette

Casi d'Uso:

  • LCA di prodotti alimentari
  • Impatto ambientale delle ricette
  • Valutazione della sostenibilita degli ingredienti

Esempio:

'@type': FoodProductFlowNode
product_name: "Manzo Allevato a Erba"
amount: 1000
raw_production: "pascolo-estensivo"
raw_labels: ["biologico", "allevato-a-erba"]
flow_location: "CH"

ActivityNode

Descrizione: Rappresenta le attivita di produzione e lavorazione nel sistema alimentare.

Proprieta Chiave:

  • activity_type - Tipo di attivita (produzione, lavorazione, trasporto)
  • activity_location - Dove si svolge l'attivita
  • inputs - Flussi in ingresso
  • outputs - Flussi in uscita

Casi d'Uso:

  • Modellazione dei processi
  • Calcolo dei costi basato sulle attivita
  • Analisi della catena di approvvigionamento

Esempio:

'@type': ActivityNode
activity_type: "macinazione-grano"
activity_location: "CH"
inputs: [flusso-grano-chicchi]
outputs: [flusso-farina-grano]

Classi per la Valutazione dell'Impatto

ImpactAssessment

Descrizione: Risultati del calcolo dell'impatto ambientale.

Proprieta Chiave:

  • gwp_total - Potenziale di riscaldamento globale totale
  • water_use - Consumo idrico
  • land_use - Occupazione del suolo
  • biodiversity_impact - Effetti sulla biodiversita

Casi d'Uso:

  • Reporting dell'impronta di carbonio
  • Divulgazione dell'impatto ambientale
  • Punteggio di sostenibilita

Esempio:

'@type': ImpactAssessment
gwp_total: 2.5 # kg CO₂-eq
water_use: 150 # litri
land_use: 0.5 # m²

Classi per la Gestione dei Dati

Recipe

Descrizione: Prodotti alimentari multi-ingrediente con metodi di preparazione.

Proprieta Chiave:

  • recipe_name - Identificatore della ricetta
  • ingredients - Lista dei flussi di ingredienti
  • preparation_steps - Attivita di cottura/preparazione
  • yield - Quantita prodotta dalla ricetta

Casi d'Uso:

  • Calcolo dell'impronta di carbonio dei menu
  • Ottimizzazione delle ricette
  • Sostenibilita nella pianificazione dei pasti

SupplyChain

Descrizione: Catena di approvvigionamento completa dal campo alla tavola.

Proprieta Chiave:

  • origin - Punto di partenza
  • destination - Punto di arrivo
  • stages - Lista di attivita e flussi
  • total_impact - Impatto ambientale aggregato

Casi d'Uso:

  • LCA completa della catena di approvvigionamento
  • Identificazione degli hotspot
  • Reporting sulla trasparenza

Classi Ausiliarie

Altre classi dello schema includono:

  • NutrientValues - Composizione nutrizionale
  • Producer - Informazioni sul produttore/fabbricante
  • Supplier - Dettagli del fornitore
  • Location - Dati sulla posizione geografica
  • Label - Informazioni su certificazioni ed etichette
  • ProcessingMethod - Dettagli sulla lavorazione alimentare
  • ProductionMethod - Pratiche agricole/produttive
  • ConservationMethod - Stoccaggio e conservazione
  • TransportMode - Metodi di trasporto
  • PackagingInfo - Dettagli sul packaging
  • E oltre 8 classi specializzate aggiuntive

Termini di Proprieta (16 Termini)

I termini di proprieta rappresentano singoli campi all'interno delle classi dello schema, abilitando l'abbinamento semantico granulare.

Classificazione per Priorita

Le proprieta sono classificate in base alla loro importanza per l'accuratezza dei calcoli:

  • Alta Priorita: Campi richiesti che impattano significativamente sui calcoli ambientali (identita del prodotto, quantita, origine)
  • Proprieta Standard: Campi aggiuntivi che perfezionano i calcoli ma hanno valori predefiniti ragionevoli

Proprieta ad Alta Priorita (6 termini)

Queste proprieta sono essenziali per calcoli accurati dell'impatto ambientale:

1. Nome Prodotto

ID: eaternity-property-productname Campo Python: product_name Schema Padre: FlowNode Tipo di Dato: Stringa Dominio: Identificazione

Esempi di Utilizzo:

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

Esempi di Valori:

  • "Farina di Grano Biologica"
  • "Manzo Allevato a Erba"
  • "Salsa di Pomodoro"

2. Quantita

ID: eaternity-property-amount Campo Python: amount Schema Padre: FlowNode Tipo di Dato: Numerico (con unita) Dominio: Misurazione

Esempi di Utilizzo:

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

Esempi di Valori:

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

3. Quantita Richiesta

ID: eaternity-property-amountpercategoryrequiredforflow Campo Python: amount_per_category_required_for_flow Schema Padre: FoodProductFlowNode Tipo di Dato: Numerico Dominio: Misurazione

Esempi di Utilizzo:

  • Required Amount
  • Required Quantity
  • Flow Amount
  • Benötigte Menge (Tedesco)

4. Paese di Origine

ID: eaternity-property-flowlocation Campo Python: flow_location Schema Padre: FlowNode Tipo di Dato: Categorico (codici paese) Dominio: Geografia

Esempi di Utilizzo:

  • Origin Country
  • Origin
  • Country
  • Location
  • Herkunftsland (Tedesco)

Esempi di Valori:

  • "CH" (Svizzera)
  • "DE" (Germania)
  • "IT" (Italia)

5. Metodo di Lavorazione

ID: eaternity-property-rawprocessing Campo Python: raw_processing Schema Padre: FoodProductFlowNode Tipo di Dato: Categorico Dominio: Processo

Esempi di Utilizzo:

  • Processing
  • Processing Method
  • Processing Type
  • Verarbeitung (Tedesco)

Esempi di Valori:

  • "fresh" (fresco)
  • "frozen" (surgelato)
  • "canned" (in scatola)
  • "dried" (essiccato)

6. Categoria Prodotto

ID: eaternity-property-glossarytags Campo Python: glossary_tags Schema Padre: FlowNode Tipo di Dato: Array di stringhe Dominio: Classificazione

Esempi di Utilizzo:

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

Esempi di Valori:

  • ["cereali", "grano", "biologico"]
  • ["latticini", "formaggio", "stagionato"]
  • ["carne", "manzo", "fresco"]

Proprieta a Media Priorita (10 termini)

7. Valori Nutrizionali

ID: eaternity-property-nutrientvalues Campo Python: nutrient_values Schema Padre: FoodProductFlowNode Dominio: Nutrizione

Esempi di Utilizzo:

  • Nutritional Values
  • Nutrients
  • Nutrition Facts
  • Nährwerte (Tedesco)

8. Ingredienti

ID: eaternity-property-ingredientsdeclaration Campo Python: ingredients_declaration Schema Padre: Recipe/FoodProductFlowNode Dominio: Composizione

Esempi di Utilizzo:

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

9. Metodo di Produzione

ID: eaternity-property-rawproduction Campo Python: raw_production Schema Padre: FoodProductFlowNode Dominio: Processo

Esempi di Utilizzo:

  • Production
  • Production Method
  • Growing Method
  • Produktion (Tedesco)

Esempi di Valori:

  • "organic" (biologico)
  • "conventional" (convenzionale)
  • "greenhouse" (serra)
  • "grass-fed" (allevato a erba)

10. Metodo di Conservazione

ID: eaternity-property-rawconservation Campo Python: raw_conservation Schema Padre: FoodProductFlowNode Dominio: Processo

Esempi di Utilizzo:

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

Esempi di Valori:

  • "fresh" (fresco)
  • "frozen" (surgelato)
  • "refrigerated" (refrigerato)
  • "ambient" (a temperatura ambiente)

11. Etichette e Certificazioni

ID: eaternity-property-rawlabels Campo Python: raw_labels Schema Padre: FoodProductFlowNode Dominio: Certificazione

Esempi di Utilizzo:

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

Esempi di Valori:

  • ["biologico", "commercio-equo"]
  • ["bio-suisse"]
  • ["eu-organic", "carbon-neutral"]

12. Produttore

ID: eaternity-property-producer Campo Python: producer Schema Padre: FoodProductFlowNode Dominio: Organizzazione

13. Fornitore

ID: eaternity-property-supplier Campo Python: supplier Schema Padre: FoodProductFlowNode Dominio: Organizzazione

14. Codice Prodotto (GTIN)

ID: eaternity-property-gtin Campo Python: gtin Schema Padre: FoodProductFlowNode Dominio: Identificazione

Esempi di Valori:

  • "7610200078753"
  • "4260123456789"

15. Durata di Stoccaggio

ID: eaternity-property-storagetime Campo Python: storage_time Schema Padre: FoodProductFlowNode Dominio: Temporale

16. Unita

ID: eaternity-property-unit Campo Python: unit Schema Padre: FlowNode Dominio: Misurazione

Esempi di Valori:

  • "kg"
  • "L"
  • "piece" (pezzo)

Flusso di Lavoro dell'Abbinamento Semantico

Da CSV Utente all'API EOS

I termini di proprieta Eaternity abilitano la mappatura automatica:

Passo 1: Intestazione Colonna CSV Utente
"Product Name" o "Produktname" o "Item Name"

Passo 2: Ricerca Semantica nel Glossario ESFC
Trova: eaternity-property-productname

Passo 3: Estrai Nome Campo Python
pythonFieldName: "product_name"

Passo 4: Mappa al Campo API EOS
FlowNode.product_name

Passo 5: Valida e Invia
Dati validati rispetto allo schema

Esempio di Importazione CSV

CSV Utente:

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

Abbinamento Semantico:

"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

Payload API EOS:

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

Esempi di Integrazione

TypeScript con API EOS

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

// Carica il glossario
const glossary: Glossary = await fetch('/glossary.json')
.then(r => r.json())

// Ottieni i termini di proprieta Eaternity
const eosProperties = glossary.terms.filter(t =>
t.source === 'eaternity' &&
t.id.startsWith('eaternity-property-')
)

// Mappa intestazione CSV a campo 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
}

// Esempio di utilizzo
const headers = ['Product Name', 'Produktname', 'Weight', 'Menge']
headers.forEach(header => {
const field = mapHeaderToEOSField(header)
console.log(`${header}${field}`)
})
// Output:
// Product Name → product_name
// Produktname → product_name
// Weight → amount
// Menge → amount

Importazione Dati Python

import json
import pandas as pd

# Carica il glossario
with open('glossary.json') as f:
glossary = json.load(f)

# Ottieni i termini di proprieta EOS
eos_properties = [
t for t in glossary['terms']
if t['source'] == 'eaternity' and
t['id'].startswith('eaternity-property-')
]

# Costruisci dizionario di mappatura
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

# Mappa CSV utente
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"Mappato: {col}{eos_field}")

# Rinomina colonne per API EOS
eos_df = user_df.rename(columns=mapped_columns)

Query SQL

-- Ottieni tutti i termini di proprieta 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;

-- Trova proprieta per esempio di utilizzo
SELECT id, name, properties->>'pythonFieldName' as python_field
FROM terms
WHERE source = 'eaternity'
AND properties->>'usageExamples' LIKE '%Weight%'
OR properties->>'usageExamples' LIKE '%Menge%';

-- Ottieni proprieta ad alta priorita
SELECT id, name, properties
FROM terms
WHERE source = 'eaternity'
AND id LIKE 'eaternity-property-%'
AND properties->>'priority' = 'high';

Domini delle Proprieta

Le proprieta sono organizzate per dominio per una migliore categorizzazione:

DominioProprietaEsempi
Identificazione2Nome Prodotto, GTIN
Misurazione3Quantita, Quantita Richiesta, Unita
Geografia1Paese di Origine
Processo3Lavorazione, Produzione, Conservazione
Classificazione1Categoria Prodotto
Nutrizione1Valori Nutrizionali
Composizione1Ingredienti
Certificazione1Etichette e Certificazioni
Organizzazione2Produttore, Fornitore
Temporale1Durata di Stoccaggio

Supporto Multilingue

I termini di proprieta includono esempi di utilizzo in piu lingue:

Inglese:

  • Product Name
  • Quantity
  • Origin Country

Tedesco:

  • Produktname
  • Menge
  • Herkunftsland

Espansione Futura:

  • Francese (Nom du produit, Quantité, Pays d'origine)
  • Italiano (Nome prodotto, Quantità, Paese di origine)
  • Spagnolo (Nombre del producto, Cantidad, País de origen)

Buone Pratiche

Selezione delle Proprieta

  1. Usare la Proprieta Piu Specifica

    • Preferite proprieta specifiche a quelle generiche
    • Abbinate il dominio al vostro tipo di dati
    • Considerate i requisiti di validazione dei dati
  2. Intestazioni Multilingue

    • Supportate varianti in piu lingue
    • Normalizzate le intestazioni prima dell'abbinamento
    • Abbinamento case-insensitive
  3. Validazione

    • Controllate i tipi di dati attesi
    • Validate i valori categorici
    • Assicurate la coerenza delle unita

Qualita dei Dati

Completezza:

  • Includete tutte le proprieta richieste
  • Fornite le proprieta opzionali quando disponibili
  • Documentate i dati mancanti

Coerenza:

  • Usate valori standardizzati per i campi categorici
  • Applicate unita coerenti
  • Seguite le linee guida sulla qualita dei dati EOS

Tracciabilita:

  • Registrate le decisioni di mappatura
  • Collegate ai dati sorgente
  • Documentate le trasformazioni

Versione e Aggiornamenti

Versione Attuale: Sincronizzata con il rilascio EOS Metodo di Aggiornamento: Estrazione manuale dallo schema EOS Frequenza di Aggiornamento: Con ogni major release di EOS

Processo di Estrazione

# Analizza lo schema Eaternity
npm run parse:eaternity

# Genera:
# - output/eaternity/processed/terms.yaml (24 classi di schema)
# - output/eaternity/processed/property-terms.yaml (16 proprieta)

# Costruisci il glossario completo
npm run build

Risorse

Risorse Schema EOS

  • Repository GitLab: gitlab.com/eaternity/eos
  • Definizione Schema: Definizioni di classi Python
  • Documentazione API: Riferimento API EOS
  • Descrizioni dei Campi: Documentazione inline

Risorse Glossario ESFC

  • 40 termini Eaternity (24 classi + 16 proprieta)
  • Abbinamento semantico per l'importazione CSV
  • Mappatura API diretta tramite pythonFieldName
  • Tipi TypeScript per l'integrazione

Miglioramenti Futuri

Espansione Fase 3

Proprieta Aggiuntive (50-100+ termini):

  • Tutti i campi FlowNode rimanenti (~10 in piu)
  • Proprieta complete di ActivityNode (~20 in piu)
  • Campi di proprieta annidate (sotto-campi nutrizionali)
  • Proprieta della valutazione dell'impatto

Descrizioni Migliorate:

  • Piu variazioni multilingue (FR, IT, ES)
  • Regole di validazione dei dati
  • Range di valori attesi
  • Link alle mappature FoodEx2/Hestia

Integrazione API:

  • Generazione schema OpenAPI
  • Validatori di richieste
  • Generatori di campi form
  • Auto-documentazione

Documentazione Correlata

Licenza

Licenza: Proprietaria (Eaternity) Utilizzo: Termini dello schema EOS disponibili come riferimento Integrazione: Gratuita per gli utenti dell'API EOS Schema Completo: Richiede licenza EOS