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
-
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 Sostenibilità Alimentare
- Calcoli dell'impatto ambientale
- Analisi dell'impronta di carbonio
- Punteggio di sostenibilità
-
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 prodottoamount- Quantitàflow_location- Origine geograficaglossary_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à 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 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 ingressooutputs- 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 totalewater_use- Consumo idricoland_use- Occupazione del suolobiodiversity_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 ricettaingredients- Lista dei flussi di ingredientipreparation_steps- Attività di cottura/preparazioneyield- 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 partenzadestination- Punto di arrivostages- Lista di attività 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 Proprietà (16 Termini)
I termini di proprietà rappresentano singoli campi all'interno delle classi dello schema, abilitando l'abbinamento semantico granulare.
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:
| Dominio | Proprietà | Esempi |
|---|---|---|
| Identificazione | 2 | Nome Prodotto, GTIN |
| Misurazione | 3 | Quantità, Quantità Richiesta, Unità |
| 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 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à
-
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
-
Intestazioni Multilingue
- Supportate varianti in più 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 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
- 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