Aller au contenu principal

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

  1. 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
  2. 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
  3. Évaluation de la durabilité alimentaire

    • Calculs des incidences environnementales
    • Analyse de l'empreinte carbone
    • Notation de la durabilité
  4. 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 produit
  • amount - Quantité
  • flow_location - Origine géographique
  • glossary_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é requise
  • raw_processing - Méthode de transformation
  • raw_production - Méthode de production
  • raw_conservation - Méthode de conservation
  • raw_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 entrants
  • outputs - 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 total
  • water_use - Consommation d'eau
  • land_use - Occupation des sols
  • biodiversity_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 recette
  • ingredients - Liste des flux d'ingrédients
  • preparation_steps - Activités de cuisson/préparation
  • yield - 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épart
  • destination - Point d'arrivée
  • stages - Liste des activités et flux
  • total_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 nutritionnelle
  • Producer - Informations sur le producteur/fabricant
  • Supplier - Détails du fournisseur
  • Location - Données de localisation géographique
  • Label - Informations sur les certifications et labels
  • ProcessingMethod - Détails de la transformation alimentaire
  • ProductionMethod - Pratiques agricoles/de production
  • ConservationMethod - Stockage et conservation
  • TransportMode - Modes de transport
  • PackagingInfo - 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.

Classification par priorité

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 :

DomainePropriétésExemples
Identification2Nom du produit, GTIN
Mesure3Quantité, Quantité requise, Unité
Géographie1Pays d'origine
Processus3Transformation, Production, Conservation
Classification1Catégorie de produit
Nutrition1Valeurs nutritionnelles
Composition1Ingrédients
Certification1Labels et certifications
Organisation2Producteur, Fournisseur
Temporel1Duré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

  1. 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
  2. En-têtes multilingues

    • Prendre en charge plusieurs variantes linguistiques
    • Normaliser les en-têtes avant la correspondance
    • Correspondance insensible à la casse
  3. 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

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