Schema


About

What is the schema?

The schema defines:

  • How the data are organised (what should go where and how the data connect).
  • Which data types are allowed (e.g., numbers or text).
  • Which data items are required and which are optional.
  • The logic to perform some basic validation of the data.

How have we built our schema?

We started with the OpenLCA schema which is built using the JSON-LD format. JSON-LD is widely used on the web (e.g., on Google Search) to structure and link data. The OpenLCA format is a tested Life Cycle Assessment (LCA) data format, used for example by the OpenLCA software and by the USDA Federal LCA Commons.

We extended the OpenLCA schema to allow it to comprehensively represent data describing soil and climate measurements, agricultural practices, and food processing operations. We used a wide range of test cases to improve and refine it. The schema can now represent virtually all of the data from the 984 published reports, articles, and datasets which are archived on the HESTIA platform.

How is the schema structured?

The schema is organised into nine nodes (e.g., Cycle, Site, Organisation). In JSON-LD each node gets its own file (e.g., cycle-1.jsonld) and global identifier. In row-column formats like Excel or CSV files, each node gets its own row and the column headers define which node and which field it is (e.g., "cycle.name" , "cycle.description" ).

Nodes contain their own data fields (e.g., description is a field within Cycle). Each field has pre-determined data types (e.g., the description field stores data in string format). Fields within Nodes mainly store meta-data.

Nodes also contain Blank Nodes. Blank Nodes are nodes without a global identifier and typically used for storing quantitative data about their parent node. For example, Inputs are blank nodes which could contain a fertiliser and amount.

How can I use the schema in my own application?

You can use the schema, along with the glossary of terms, to structure agri-environmental data into a consistent format. In particular, it can be used to structure LCA data, farm surveys, data from many types of agricultural experiments, and data which are stored in the digital tools used by farmers and food processors.

The schema is open-source (under a CC-BY license). It can be used for commercial and non-commercial applications free-of-charge.

How do I use the schema when uploading data to HESTIA?

Use the schema to create the column headers in your Excel or CSV uploads, use it to identify the overall structure of your data, and use it to determine possible values that can be used in each field. See the How to Upload page for examples.

How does the schema link to the glossary?

The glossary of terms is our controlled vocabulary containing 35,917 items from the food system and 372,900 geographic regions. Each Term in the glossary has predefined units and a fixed identifier .

All Blank Nodes and all Properties are described using terms. For example, if you want to add "Ammonium bicarbonate" as fertiliser Input to a Cycle, you must use the term Ammonium bicarbonate (kg N) to describe it and your data must have the units "kg N".

How does our schema map to existing LCA formats?

LCA has specific terminology, and we seek to use it in many cases. However, in a few cases we have chosen to use more general language to cover a wider range of use cases:

  • A Cycle is a "unit process" in LCA.
  • Multiple Cycles which have been connected are a "product system".
  • Products are "product flows".
  • Inputs and Emissions are "elementary flows".

For a beta-version of a converter between the HESTIA and OpenLCA data format please see our GitLab repo .

Where can I find extra resources related to the schema?

At the bottom of each schema page we provide data examples in both JSON-LD and CSV format. You can also find our changelog detailing any changes we have made to the schema here.

If I have a question, who can I contact?

If you have a general question about the schema, please contact community@hestia.earth . If you would like to report a bug or request a new feature, please use this link .