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
-
Mappatura dell'Importazione Dati
- Abbinamento semantico delle colonne CSV utente ai campi EOS
- Riconoscimento e validazione automatica dei campi
- Integrazione dati senza configurazione
-
Integrazione API
- Mappatura diretta agli endpoint dell'API EOS
- Strutture dati type-safe
- Validazione dello schema
-
Valutazione della Sostenibilita Alimentare
- Calcoli dell'impatto ambientale
- Analisi dell'impronta di carbonio
- Punteggio di sostenibilita
-
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 prodottoamount- Quantitaflow_location- Origine geograficaglossary_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 richiestaraw_processing- Metodo di lavorazioneraw_production- Metodo di produzioneraw_conservation- Metodo di conservazioneraw_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'attivitainputs- Flussi in ingressooutputs- 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 totalewater_use- Consumo idricoland_use- Occupazione del suolobiodiversity_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 ricettaingredients- Lista dei flussi di ingredientipreparation_steps- Attivita di cottura/preparazioneyield- 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 partenzadestination- Punto di arrivostages- Lista di attivita e flussitotal_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 nutrizionaleProducer- Informazioni sul produttore/fabbricanteSupplier- Dettagli del fornitoreLocation- Dati sulla posizione geograficaLabel- Informazioni su certificazioni ed etichetteProcessingMethod- Dettagli sulla lavorazione alimentareProductionMethod- Pratiche agricole/produttiveConservationMethod- Stoccaggio e conservazioneTransportMode- Metodi di trasportoPackagingInfo- 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.
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:
| Dominio | Proprieta | Esempi |
|---|---|---|
| Identificazione | 2 | Nome Prodotto, GTIN |
| Misurazione | 3 | Quantita, Quantita Richiesta, Unita |
| Geografia | 1 | Paese di Origine |
| Processo | 3 | Lavorazione, Produzione, Conservazione |
| Classificazione | 1 | Categoria Prodotto |
| Nutrizione | 1 | Valori Nutrizionali |
| Composizione | 1 | Ingredienti |
| Certificazione | 1 | Etichette e Certificazioni |
| Organizzazione | 2 | Produttore, Fornitore |
| Temporale | 1 | Durata 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
-
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
-
Intestazioni Multilingue
- Supportate varianti in piu lingue
- Normalizzate le intestazioni prima dell'abbinamento
- Abbinamento case-insensitive
-
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
- Fonti Dati - Panoramica di tutte le 10 fonti
- Mappatura Semantica - Abbinamento potenziato dall'IA
- Formati Dati - Formati di esportazione
- Riferimento Hestia - Dati sull'impatto ambientale
- Riferimento FoodEx2 - Classificazione alimentare
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