Référence du schéma Eaternity
Le schéma Eaternity définit le modèle de données pour le Système d'Exploitation Environnemental (EOS), la plateforme d'évaluation de la durabilité alimentaire d'Eaternity. Le Glossaire ESFC inclut 40 termes Eaternity : 24 classes de schéma et 16 propriétés.
Vue d'ensemble
Les termes du schéma Eaternity fournissent une correspondance directe entre les données utilisateur et l'interface de programmation applicative EOS, permettant la mise en correspondance sémantique des colonnes CSV avec les champs du schéma et prenant en charge l'import de données sans configuration préalable.
Statistiques clés :
- Classes de schéma : 24 termes
- Propriétés : 16 termes
- Total des termes : 40
- Format : LinkML YAML avec contexte JSON-LD
- Source : gitlab.com/eaternity/eos
Objectif et applications
Cas d'utilisation principaux
-
Correspondance pour l'import de données
- Mise en correspondance sémantique des colonnes CSV utilisateur avec les champs EOS
- Reconnaissance et validation automatiques des champs
- Intégration des données sans configuration préalable
-
Intégration avec l'interface de programmation applicative
- Correspondance directe avec les points d'accès de l'interface de programmation applicative EOS
- Structures de données typées
- Validation du schéma
-
Évaluation de la durabilité alimentaire
- Calculs des incidences environnementales
- Analyse de l'empreinte carbone
- Notation de la durabilité
-
Recherche et analyse
- Modélisation des systèmes alimentaires
- Analyse de la chaîne d'approvisionnement
- Développement de métriques de durabilité
Classes de schéma (24 termes)
Classes de flux principales
FlowNode
Description : Représente les flux de matières dans le système alimentaire.
Propriétés clés :
product_name- Identification du produitamount- Quantitéflow_location- Origine géographiqueglossary_tags- Catégorisation du produit
Cas d'utilisation :
- Suivi des ingrédients
- Comptabilité des flux de matières
- Cartographie de la chaîne d'approvisionnement
Exemple :
'@type': FlowNode
product_name: "Organic Wheat Flour"
amount: 500
unit: "kg"
flow_location: "CH"
glossary_tags: ["grain", "wheat", "organic"]
FoodProductFlowNode
Description : Nœud de flux spécialisé pour les produits alimentaires avec des propriétés supplémentaires spécifiques aux aliments.
Hérite de : FlowNode
Propriétés supplémentaires :
amount_per_category_required_for_flow- Quantité requiseraw_processing- Méthode de transformationraw_production- Méthode de productionraw_conservation- Méthode de conservationraw_labels- Certifications et labels
Cas d'utilisation :
- Analyse du Cycle de Vie des produits alimentaires
- Incidence environnementale des recettes
- Évaluation de la durabilité des ingrédients
Exemple :
'@type': FoodProductFlowNode
product_name: "Grass-fed Beef"
amount: 1000
raw_production: "extensive-pasture"
raw_labels: ["organic", "grass-fed"]
flow_location: "CH"
ActivityNode
Description : Représente les activités de production et de transformation dans le système alimentaire.
Propriétés clés :
activity_type- Type d'activité (production, transformation, transport)activity_location- Lieu de l'activitéinputs- Flux entrantsoutputs- Flux sortants
Cas d'utilisation :
- Modélisation des processus
- Calcul des coûts par activité
- Analyse de la chaîne d'approvisionnement
Exemple :
'@type': ActivityNode
activity_type: "wheat-milling"
activity_location: "CH"
inputs: [wheat-grain-flow]
outputs: [wheat-flour-flow]
Classes d'évaluation des incidences
ImpactAssessment
Description : Résultats des calculs d'incidences environnementales.
Propriétés clés :
gwp_total- Potentiel de réchauffement global totalwater_use- Consommation d'eauland_use- Occupation des solsbiodiversity_impact- Effets sur la biodiversité
Cas d'utilisation :
- Rapports sur l'empreinte carbone
- Divulgation des incidences environnementales
- Notation de la durabilité
Exemple :
'@type': ImpactAssessment
gwp_total: 2.5 # kg CO₂-eq
water_use: 150 # litres
land_use: 0.5 # m²
Classes de gestion des données
Recipe
Description : Produits alimentaires multi-ingrédients avec méthodes de préparation.
Propriétés clés :
recipe_name- Identifiant de la recetteingredients- Liste des flux d'ingrédientspreparation_steps- Activités de cuisson/préparationyield- Quantité produite par la recette
Cas d'utilisation :
- Empreinte carbone des menus
- Optimisation des recettes
- Durabilité de la planification des repas
SupplyChain
Description : Chaîne d'approvisionnement complète de la ferme à l'assiette.
Propriétés clés :
origin- Point de départdestination- Point d'arrivéestages- Liste des activités et fluxtotal_impact- Incidence environnementale agrégée
Cas d'utilisation :
- Analyse du Cycle de Vie de la chaîne d'approvisionnement complète
- Identification des points critiques
- Rapports de transparence
Classes auxiliaires
Autres classes de schéma comprennent :
NutrientValues- Composition nutritionnelleProducer- Informations sur le producteur/fabricantSupplier- Détails du fournisseurLocation- Données de localisation géographiqueLabel- Informations sur les certifications et labelsProcessingMethod- Détails de la transformation alimentaireProductionMethod- Pratiques agricoles/de productionConservationMethod- Stockage et conservationTransportMode- Modes de transportPackagingInfo- Détails de l'emballage- Et 8+ autres classes spécialisées
Propriétés (16 termes)
Les propriétés représentent les champs individuels au sein des classes de schéma, permettant une mise en correspondance sémantique granulaire.
Les propriétés sont classées selon leur importance pour la précision des calculs :
- Haute priorité : Champs requis qui influencent significativement les calculs environnementaux (identité du produit, quantité, origine)
- Propriétés standard : Champs supplémentaires qui affinent les calculs mais ont des valeurs par défaut raisonnables
Propriétés de haute priorité (6 termes)
Ces propriétés sont essentielles pour des calculs précis des incidences environnementales :
1. Nom du produit
Identifiant : eaternity-property-productname
Champ Python : product_name
Schéma parent : FlowNode
Type de données : Chaîne de caractères
Domaine : Identification
Exemples d'utilisation :
- Product Name
- Product
- Item Name
- Food Name
- Name
- Produktname (allemand)
Exemples de valeurs :
- "Organic Wheat Flour"
- "Grass-fed Beef"
- "Tomato Sauce"
2. Quantité
Identifiant : eaternity-property-amount
Champ Python : amount
Schéma parent : FlowNode
Type de données : Numérique (avec unité)
Domaine : Mesure
Exemples d'utilisation :
- Quantity
- Amount
- Weight
- Mass
- Volume
- Menge (allemand)
Exemples de valeurs :
- 500 (kg)
- 1.5 (L)
- 250 (g)
3. Quantité requise
Identifiant : eaternity-property-amountpercategoryrequiredforflow
Champ Python : amount_per_category_required_for_flow
Schéma parent : FoodProductFlowNode
Type de données : Numérique
Domaine : Mesure
Exemples d'utilisation :
- Required Amount
- Required Quantity
- Flow Amount
- Benötigte Menge (allemand)
4. Pays d'origine
Identifiant : eaternity-property-flowlocation
Champ Python : flow_location
Schéma parent : FlowNode
Type de données : Catégoriel (codes pays)
Domaine : Géographie
Exemples d'utilisation :
- Origin Country
- Origin
- Country
- Location
- Herkunftsland (allemand)
Exemples de valeurs :
- "CH" (Suisse)
- "DE" (Allemagne)
- "IT" (Italie)
5. Méthode de transformation
Identifiant : eaternity-property-rawprocessing
Champ Python : raw_processing
Schéma parent : FoodProductFlowNode
Type de données : Catégoriel
Domaine : Processus
Exemples d'utilisation :
- Processing
- Processing Method
- Processing Type
- Verarbeitung (allemand)
Exemples de valeurs :
- "fresh"
- "frozen"
- "canned"
- "dried"
6. Catégorie de produit
Identifiant : eaternity-property-glossarytags
Champ Python : glossary_tags
Schéma parent : FlowNode
Type de données : Tableau de chaînes de caractères
Domaine : Classification
Exemples d'utilisation :
- Category
- Type
- Classification
- Product Category
- Kategorie (allemand)
Exemples de valeurs :
- ["grain", "wheat", "organic"]
- ["dairy", "cheese", "hard"]
- ["meat", "beef", "fresh"]
Propriétés de priorité moyenne (10 termes)
7. Valeurs nutritionnelles
Identifiant : eaternity-property-nutrientvalues
Champ Python : nutrient_values
Schéma parent : FoodProductFlowNode
Domaine : Nutrition
Exemples d'utilisation :
- Nutritional Values
- Nutrients
- Nutrition Facts
- Nährwerte (allemand)
8. Ingrédients
Identifiant : eaternity-property-ingredientsdeclaration
Champ Python : ingredients_declaration
Schéma parent : Recipe/FoodProductFlowNode
Domaine : Composition
Exemples d'utilisation :
- Ingredients
- Ingredient List
- Components
- Zutaten (allemand)
9. Méthode de production
Identifiant : eaternity-property-rawproduction
Champ Python : raw_production
Schéma parent : FoodProductFlowNode
Domaine : Processus
Exemples d'utilisation :
- Production
- Production Method
- Growing Method
- Produktion (allemand)
Exemples de valeurs :
- "organic"
- "conventional"
- "greenhouse"
- "grass-fed"
10. Méthode de conservation
Identifiant : eaternity-property-rawconservation
Champ Python : raw_conservation
Schéma parent : FoodProductFlowNode
Domaine : Processus
Exemples d'utilisation :
- Conservation
- Storage Method
- Preservation
- Konservierung (allemand)
Exemples de valeurs :
- "fresh"
- "frozen"
- "refrigerated"
- "ambient"
11. Labels et certifications
Identifiant : eaternity-property-rawlabels
Champ Python : raw_labels
Schéma parent : FoodProductFlowNode
Domaine : Certification
Exemples d'utilisation :
- Labels
- Certifications
- Quality Marks
- Label (allemand)
Exemples de valeurs :
- ["organic", "fair-trade"]
- ["bio-suisse"]
- ["eu-organic", "carbon-neutral"]
12. Producteur
Identifiant : eaternity-property-producer
Champ Python : producer
Schéma parent : FoodProductFlowNode
Domaine : Organisation
13. Fournisseur
Identifiant : eaternity-property-supplier
Champ Python : supplier
Schéma parent : FoodProductFlowNode
Domaine : Organisation
14. Code produit (GTIN)
Identifiant : eaternity-property-gtin
Champ Python : gtin
Schéma parent : FoodProductFlowNode
Domaine : Identification
Exemples de valeurs :
- "7610200078753"
- "4260123456789"
15. Durée de stockage
Identifiant : eaternity-property-storagetime
Champ Python : storage_time
Schéma parent : FoodProductFlowNode
Domaine : Temporel
16. Unité
Identifiant : eaternity-property-unit
Champ Python : unit
Schéma parent : FlowNode
Domaine : Mesure
Exemples de valeurs :
- "kg"
- "L"
- "piece"
Flux de travail de correspondance sémantique
Du CSV utilisateur à l'interface de programmation applicative EOS
Les propriétés Eaternity permettent une correspondance automatique :
Étape 1 : En-tête de colonne CSV utilisateur
"Product Name" ou "Produktname" ou "Item Name"
↓
Étape 2 : Recherche sémantique dans le Glossaire ESFC
Trouve : eaternity-property-productname
↓
Étape 3 : Extraction du nom de champ Python
pythonFieldName: "product_name"
↓
Étape 4 : Correspondance avec le champ de l'interface de programmation applicative EOS
FlowNode.product_name
↓
Étape 5 : Validation et soumission
Données validées selon le schéma
Exemple d'import CSV
CSV utilisateur :
Product Name,Weight,Origin Country,Processing
Organic Tomatoes,500,IT,fresh
Wheat Flour,1000,CH,milled
Correspondance sémantique :
"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
Charge utile de l'interface de programmation applicative EOS :
{
"@type": "FoodProductFlowNode",
"product_name": "Organic Tomatoes",
"amount": 500,
"unit": "kg",
"flow_location": "IT",
"raw_processing": "fresh"
}
Exemples d'intégration
TypeScript avec l'interface de programmation applicative EOS
import { Glossary, Term } from './glossary.types'
// Charger le glossaire
const glossary: Glossary = await fetch('/glossary.json')
.then(r => r.json())
// Obtenir les propriétés Eaternity
const eosProperties = glossary.terms.filter(t =>
t.source === 'eaternity' &&
t.id.startsWith('eaternity-property-')
)
// Faire correspondre l'en-tête CSV au champ 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
}
// Exemple d'utilisation
const headers = ['Product Name', 'Produktname', 'Weight', 'Menge']
headers.forEach(header => {
const field = mapHeaderToEOSField(header)
console.log(`${header} → ${field}`)
})
// Sortie :
// Product Name → product_name
// Produktname → product_name
// Weight → amount
// Menge → amount
Import de données Python
import json
import pandas as pd
# Charger le glossaire
with open('glossary.json') as f:
glossary = json.load(f)
# Obtenir les propriétés EOS
eos_properties = [
t for t in glossary['terms']
if t['source'] == 'eaternity' and
t['id'].startswith('eaternity-property-')
]
# Construire le dictionnaire de correspondance
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
# Faire correspondre le CSV utilisateur
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"Mapped: {col} → {eos_field}")
# Renommer les colonnes pour l'interface de programmation applicative EOS
eos_df = user_df.rename(columns=mapped_columns)
Requêtes SQL
-- Obtenir toutes les propriétés 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;
-- Trouver une propriété par exemple d'utilisation
SELECT id, name, properties->>'pythonFieldName' as python_field
FROM terms
WHERE source = 'eaternity'
AND properties->>'usageExamples' LIKE '%Weight%'
OR properties->>'usageExamples' LIKE '%Menge%';
-- Obtenir les propriétés de haute priorité
SELECT id, name, properties
FROM terms
WHERE source = 'eaternity'
AND id LIKE 'eaternity-property-%'
AND properties->>'priority' = 'high';
Domaines des propriétés
Les propriétés sont organisées par domaine pour une meilleure catégorisation :
| Domaine | Propriétés | Exemples |
|---|---|---|
| Identification | 2 | Nom du produit, GTIN |
| Mesure | 3 | Quantité, Quantité requise, Unité |
| Géographie | 1 | Pays d'origine |
| Processus | 3 | Transformation, Production, Conservation |
| Classification | 1 | Catégorie de produit |
| Nutrition | 1 | Valeurs nutritionnelles |
| Composition | 1 | Ingrédients |
| Certification | 1 | Labels et certifications |
| Organisation | 2 | Producteur, Fournisseur |
| Temporel | 1 | Durée de stockage |
Support multilingue
Les propriétés incluent des exemples d'utilisation dans plusieurs langues :
Anglais :
- Product Name
- Quantity
- Origin Country
Allemand :
- Produktname
- Menge
- Herkunftsland
Extensions futures :
- Français (Nom du produit, Quantité, Pays d'origine)
- Italien (Nome prodotto, Quantità, Paese di origine)
- Espagnol (Nombre del producto, Cantidad, País de origen)
Bonnes pratiques
Sélection des propriétés
-
Utiliser la propriété la plus spécifique
- Préférer les propriétés spécifiques aux génériques
- Faire correspondre le domaine à votre type de données
- Considérer les exigences de validation des données
-
En-têtes multilingues
- Prendre en charge plusieurs variantes linguistiques
- Normaliser les en-têtes avant la correspondance
- Correspondance insensible à la casse
-
Validation
- Vérifier les types de données attendus
- Valider les valeurs catégorielles
- Assurer la cohérence des unités
Qualité des données
Complétude :
- Inclure toutes les propriétés requises
- Fournir les propriétés optionnelles lorsqu'elles sont disponibles
- Documenter les données manquantes
Cohérence :
- Utiliser des valeurs normalisées pour les champs catégoriels
- Appliquer des unités cohérentes
- Suivre les directives de qualité des données EOS
Traçabilité :
- Enregistrer les décisions de correspondance
- Lier aux données sources
- Documenter les transformations
Version et mises à jour
Version actuelle : Synchronisée avec les versions EOS Méthode de mise à jour : Extraction manuelle depuis le schéma EOS Fréquence de mise à jour : À chaque version majeure d'EOS
Processus d'extraction
# Analyser le schéma Eaternity
npm run parse:eaternity
# Génère :
# - output/eaternity/processed/terms.yaml (24 classes de schéma)
# - output/eaternity/processed/property-terms.yaml (16 propriétés)
# Construire le glossaire complet
npm run build
Ressources
Ressources du schéma EOS
- Dépôt GitLab : gitlab.com/eaternity/eos
- Définition du schéma : Définitions de classes Python
- Documentation de l'interface de programmation applicative : Référence de l'interface de programmation applicative EOS
- Descriptions des champs : Documentation en ligne
Ressources du Glossaire ESFC
- 40 termes Eaternity (24 classes + 16 propriétés)
- Correspondance sémantique pour l'import CSV
- Correspondance directe avec l'interface de programmation applicative via pythonFieldName
- Types TypeScript pour l'intégration
Améliorations futures
Expansion Phase 3
Propriétés supplémentaires (50-100+ termes) :
- Tous les champs FlowNode restants (~10 de plus)
- Propriétés ActivityNode complètes (~20 de plus)
- Champs de propriétés imbriquées (sous-champs nutritionnels)
- Propriétés d'évaluation des incidences
Descriptions améliorées :
- Plus de variantes multilingues (FR, IT, ES)
- Règles de validation des données
- Plages de valeurs attendues
- Liens vers les correspondances FoodEx2/Hestia
Intégration avec l'interface de programmation applicative :
- Génération de schéma OpenAPI
- Validateurs de requêtes
- Générateurs de champs de formulaire
- Documentation automatique
Documentation associée
- Sources de données - Vue d'ensemble des 10 sources
- Correspondance sémantique - Correspondance assistée par intelligence artificielle
- Formats de données - Formats d'export
- Référence Hestia - Données d'incidence environnementale
- Référence FoodEx2 - Classification alimentaire
Licence
Licence : Propriétaire (Eaternity) Utilisation : Termes du schéma EOS disponibles comme référence Intégration : Gratuite pour les utilisateurs de l'interface de programmation applicative EOS Schéma complet : Nécessite une licence EOS