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 sostenibilità alimentare. Il Glossario ESFC include 40 termini Eaternity: 24 classi di schema e 16 termini di proprietà.

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 Proprietà: 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 Sostenibilità Alimentare

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

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

Classi di Schema (24 Termini)​

Classi Core per i Flussi​

FlowNode​

Descrizione: Rappresenta i flussi di materiali nel sistema alimentare.

Proprietà Chiave:

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

Casi d'Uso:

  • Tracciamento degli ingredienti
  • Contabilità 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 proprietà aggiuntive specifiche per gli alimenti.

Estende: FlowNode

Proprietà Aggiuntive:

  • amount_per_category_required_for_flow - Quantità 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 sostenibilità 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 attività di produzione e lavorazione nel sistema alimentare.

Proprietà Chiave:

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

Casi d'Uso:

  • Modellazione dei processi
  • Calcolo dei costi basato sulle attività
  • 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.

Proprietà Chiave:

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

Casi d'Uso:

  • Reporting dell'impronta di carbonio
  • Divulgazione dell'impatto ambientale
  • Punteggio di sostenibilità

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.

Proprietà Chiave:

  • recipe_name - Identificatore della ricetta
  • ingredients - Lista dei flussi di ingredienti
  • preparation_steps - Attività di cottura/preparazione
  • yield - Quantità prodotta dalla ricetta

Casi d'Uso:

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

SupplyChain​

Descrizione: Catena di approvvigionamento completa dal campo alla tavola.

Proprietà Chiave:

  • origin - Punto di partenza
  • destination - Punto di arrivo
  • stages - Lista di attività 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 Proprietà (16 Termini)​

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

Classificazione per Priorità

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

  • Alta Priorità: Campi richiesti che impattano significativamente sui calcoli ambientali (identità del prodotto, quantità, origine)
  • Proprietà Standard: Campi aggiuntivi che perfezionano i calcoli ma hanno valori predefiniti ragionevoli

Proprietà ad Alta Priorità (6 termini)​

Queste proprietà 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. Quantità​

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

Esempi di Utilizzo:

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

Esempi di Valori:

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

3. Quantità 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"]

Proprietà a Media Priorità (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. Unità​

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 proprietà 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 Proprietà​

Le proprietà sono organizzate per dominio per una migliore categorizzazione:

DominioProprietàEsempi
Identificazione2Nome Prodotto, GTIN
Misurazione3Quantità, Quantità Richiesta, Unità
Geografia1Paese di Origine
Processo3Lavorazione, Produzione, Conservazione
Classificazione1Categoria Prodotto
Nutrizione1Valori Nutrizionali
Composizione1Ingredienti
Certificazione1Etichette e Certificazioni
Organizzazione2Produttore, Fornitore
Temporale1Durata di Stoccaggio

Supporto Multilingue​

I termini di proprietà includono esempi di utilizzo in più 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 Proprietà​

  1. Usare la Proprietà Più Specifica

    • Preferite proprietà 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 più 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 unità

Qualità dei Dati​

Completezza:

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

Coerenza:

  • Usate valori standardizzati per i campi categorici
  • Applicate unità coerenti
  • Seguite le linee guida sulla qualità dei dati EOS

Tracciabilità:

  • 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 proprietà)
  • Abbinamento semantico per l'importazione CSV
  • Mappatura API diretta tramite pythonFieldName
  • Tipi TypeScript per l'integrazione

Miglioramenti Futuri​

Espansione Fase 3​

Proprietà Aggiuntive (50-100+ termini):

  • Tutti i campi FlowNode rimanenti (~10 in più)
  • Proprietà complete di ActivityNode (~20 in più)
  • Campi di proprietà annidate (sotto-campi nutrizionali)
  • Proprietà della valutazione dell'impatto

Descrizioni Migliorate:

  • Più 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