{
  "$id": "https://www.hestia.earth/schema-data/json-schema/Cycle-deep.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$comment": "Schema version 39.0.1",
  "title": "Cycle",
  "description": "The [Inputs](/schema/Input), [Emissions](/schema/Emission), [Products](/schema/Product), and [Practices](/schema/Practice) created or used during a period. A Cycle also includes a [Completeness](/schema/Completeness) assessment, describing how complete the Inputs and Products data are, and [Transformations](/schema/Transformation), which allow Products to be transformed into new Products in the same Cycle. For animal production Cycles, the types of [Animal](/schema/Animal) present can also be specified. A Cycle occurs on a [Site](/schema/Site).\n",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string",
      "description": "My local unique ID",
      "examples": [
        "my-unique-id-1"
      ],
      "exportDefaultCSV": true,
      "pattern": "^[\\w\\u00C0-\\u017F\\-\\.\\s\\(\\),+]+$"
    },
    "@id": {
      "type": "string",
      "description": "Unique id assigned by HESTIA",
      "examples": [
        "@hestia-unique-id-1"
      ],
      "extend": true,
      "exportDefaultCSV": true
    },
    "type": {
      "type": "string",
      "description": "Type of the Node",
      "default": "Cycle",
      "enum": [
        "Cycle"
      ]
    },
    "@type": {
      "type": "string",
      "description": "Type of the Node",
      "default": "Cycle",
      "enum": [
        "Cycle"
      ],
      "extend": true
    },
    "name": {
      "type": "string",
      "description": "An automatically generated name for the Cycle composed of: primary product name, \"-\", site.region \",\" site.country, \"-\", endDate, \"-\", treatment, and/or description.",
      "examples": [
        "Wheat, grain - Forbach, France - 1989",
        "Cattle (beef) - Rondônia, Brazil - 2013",
        "African aubergine, fruit - Côte d'Ivoire - 2010-2025"
      ],
      "internal": true,
      "searchable": true,
      "extend": true
    },
    "description": {
      "type": "string",
      "description": "A description of the Cycle, including information that cannot be captured with other fields.",
      "examples": [
        "50N treatment"
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "functionalUnit": {
      "type": "string",
      "description": "The units that the inputs, emissions, products, and transformations are expressed 'per'. Can either be: 1 ha (one hectare) or relative (meaning that the quantities of Inputs and Emissions correspond to the quantities of Products). If the primary product is a crop or forage, the functional unit must be 1 ha.",
      "examples": [
        "1 ha",
        "relative",
        "1 ha"
      ],
      "enum": [
        "1 ha",
        "relative"
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "functionalUnitDetails": {
      "type": "string",
      "description": "Further information on the functional unit (e.g., 'one batch').",
      "examples": [],
      "exportDefaultCSV": true
    },
    "endDate": {
      "type": "string",
      "description": "The end date of the Cycle in ISO 8601 format (YYYY-MM-DD, YYYY-MM, or YYYY). If startDate is specified to month or day precision, endDate must be too. For crops, endDate must be the harvest date. For continually harvested crops, it should be the end of the year.",
      "examples": [
        "1989-12-31",
        "2013",
        "2025"
      ],
      "datePattern": true,
      "searchable": true,
      "exportDefaultCSV": true
    },
    "startDate": {
      "type": "string",
      "description": "The start date of the Cycle in ISO 8601 format (YYYY-MM-DD, YYYY-MM, or YYYY). It is calculated as endDate - cycleDuration. For temporary crops, the start date should be the date of harvest of the previous crop for consistency with FAOSTAT (where a long fallow period is counted as a crop). For permanent crops it should be the start of the year. However other start dates can be used, such as the sowing date or soil preparation date. While the schema allows only one startDate, use terms from the glossary to record further information (e.g., with terms like Cropping duration).",
      "examples": [
        "1989-06-01",
        "2010"
      ],
      "datePattern": true,
      "exportDefaultCSV": true
    },
    "startDateDefinition": {
      "type": "string",
      "description": "A definition of what the start date is. This is a required field if startDate or cycleDuration are provided.",
      "examples": [
        "harvest of previous crop",
        "one year prior",
        "start of year"
      ],
      "enum": [
        "harvest of previous crop",
        "soil preparation date",
        "sowing date",
        "transplanting date",
        "orchard or vineyard establishment date",
        "first bearing year",
        "stocking date",
        "start of animal life",
        "start of year",
        "one year prior",
        "start of wild harvest period"
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "cycleDuration": {
      "type": "number",
      "minimum": 0,
      "maximum": 3650,
      "description": "The duration of the Cycle in days, equal to endDate - startDate. For crop production Cycles, this should generally be 365 days or less, but to account for short fallows before the main production Cycle it can be longer, but must be 730 days or less.",
      "examples": [
        214,
        365
      ],
      "exportDefaultCSV": true
    },
    "site": {
      "$ref": "./Site-deep.json#",
      "description": "A reference to the Site where this Cycle occurred.",
      "examples": [
        {
          "@id": "site",
          "@type": "Site",
          "name": "Field 1",
          "siteType": "cropland",
          "country": {
            "@id": "GADM-FRA",
            "@type": "Term",
            "name": "France",
            "termType": "region"
          }
        },
        {
          "@id": "site",
          "@type": "Site",
          "name": "Pasture - Brazil"
        },
        {
          "@id": "africanAubergineFruit-cote-divoire-2010-2025-20250427",
          "@type": "Site"
        }
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "otherSites": {
      "type": "array",
      "items": {
        "$ref": "./Site-deep.json#"
      },
      "description": "If the Cycle occurred on multiple Sites, a list of the other Sites.",
      "examples": [
        [
          {
            "@id": "7aalbii",
            "@type": "Site",
            "name": "Animal Housing - Brazil"
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "siteDuration": {
      "type": "number",
      "minimum": 0,
      "description": "The duration the Site is used for this Cycle in days. For temporary crops, the use period is defined as including the short fallow period and is therefore the period from harvest of the previous crop to harvest of the current crop (siteDuration = cycleDuration when startDateDefinition = harvest of previous crop). For permanent crops, the use period is equal to the cycleDuration. For animal production Cycles, this should be the time the animals are physically present on the Site and siteUnusedDuration should be used to record periods where the Site is un-grazed, fallow, or unused.",
      "examples": [
        214,
        300
      ],
      "exportDefaultCSV": true
    },
    "otherSitesDuration": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "number",
            "minimum": 0
          },
          {
            "type": "null"
          }
        ]
      },
      "description": "If a Cycle occurred on multiple Sites, a corresponding array to otherSites with the number of days on each Site.",
      "examples": [
        [
          65
        ]
      ],
      "minimum": 0,
      "arraySameSize": [
        "otherSites"
      ],
      "exportDefaultCSV": true
    },
    "siteUnusedDuration": {
      "type": "number",
      "minimum": 0,
      "description": "During a Cycle, or over a number of Cycles, Sites are often unused for production for a period of time (e.g., the long fallow duration in crop production systems or periods when animals have been rotated to a different field). The unused duration is included in land occupation calculations. For cropping Cycles, siteUnusedDuration is calculated as the long fallow duration divided by the rotation duration multiplied by the siteDuration. It is therefore a time weighted allocation of the long fallow period to each Cycle in the crop rotation. For animal production Cycles, it is the period when animals are not present on the Site (e.g., if animals spend half the year in housing and half the year on pasture) it would be calculated 365/2 days. For animal production Cycles, if there are no other uses of a Site, it can simply be calculated as cycleDuration - siteDuration for each Site. For aquaculture production Cycles, it is the time between previous harvest and the current stocking (see Fallow period (aquaculture)).",
      "examples": [
        65
      ],
      "exportDefaultCSV": true
    },
    "otherSitesUnusedDuration": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "number",
            "minimum": 0
          },
          {
            "type": "null"
          }
        ]
      },
      "description": "If a Cycle occurred on multiple Sites, a corresponding array to otherSites with the number of days the Site was unused for.",
      "examples": [
        [
          300
        ]
      ],
      "minimum": 0,
      "arraySameSize": [
        "otherSites"
      ],
      "exportDefaultCSV": true
    },
    "siteArea": {
      "type": "number",
      "minimum": 0,
      "description": "The area of the site in hectares per functionalUnit. If the functionalUnit is 1 ha, this will default to 1. If the functionalUnit is relative this is the area of site required to produce the products from this Cycle. For cropland, this must be area under cultivation, also called sown area. Harvested area, which can be less than sown area, can be defined using the field harvestedArea.",
      "examples": [
        1,
        33.12
      ],
      "exportDefaultCSV": true
    },
    "otherSitesArea": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "number",
            "minimum": 0
          },
          {
            "type": "null"
          }
        ]
      },
      "description": "If a Cycle occurred on multiple Sites, a corresponding array to otherSites with the area of each of each of the other Sites, in hectares, required to produce the products from this Cycle.",
      "examples": [
        [
          0.28
        ]
      ],
      "minimum": 0,
      "arraySameSize": [
        "otherSites"
      ],
      "exportDefaultCSV": true
    },
    "harvestedArea": {
      "type": "number",
      "description": "For crops, the area harvested per functionalUnit of this Cycle in hectares. Area harvested is the same as area under cultivation if the entire cultivated area is harvested, but less if crops fail or are not harvested for economic or other reasons.",
      "examples": [],
      "exclusiveMinimum": 0,
      "exportDefaultCSV": true
    },
    "numberOfCycles": {
      "type": "integer",
      "description": "If data on multiple Cycles are aggregated and represented as a single Cycle, the number of Cycles. For example, Cycles occurred on the same Site in multiple growing seasons might be represented as a single Cycle with standard deviations across Cycles.",
      "examples": [],
      "minimum": 1,
      "exportDefaultCSV": true,
      "searchable": true
    },
    "treatment": {
      "type": "string",
      "description": "A description of the treatment administered by researchers to the experimental unit. Use the numberOfReplications field to specify the number of replicates for each treatment.",
      "examples": [],
      "exportDefaultCSV": true
    },
    "commercialPracticeTreatment": {
      "type": "boolean",
      "description": "Whether this treatment is representative of typical commercial practice. Required if treatment is specified.",
      "examples": [],
      "exportDefaultCSV": true
    },
    "numberOfReplications": {
      "type": "integer",
      "description": "In experimental studies, the number of replicates for the treatment.",
      "examples": [],
      "minimum": 1,
      "exportDefaultCSV": true
    },
    "sampleWeight": {
      "type": "integer",
      "description": "In surveys, the sample weight for this Cycle relative to all other Cycles included in the Source.",
      "examples": [],
      "minimum": 0,
      "maximum": 100,
      "exportDefaultCSV": true
    },
    "defaultMethodClassification": {
      "type": "string",
      "description": "The default classification of the method used to acquire or estimate all Input, Product, Practice, and Transport data in the Cycle. It can be overridden by specifying a methodClassification for each Input, Product, Practice, or Transport stage.    physical measurement means the amount is quantified using weighing,\n    volume measurement, metering, chemical methods, or other physical approaches.\n\n    verified survey data means the data are initially collected through\n    surveys; all or a subset of the data are verified using physical methods; and\n    erroneous survey data are discarded or corrected.\n\n    non-verified survey data means the data are collected through\n    surveys that have not been subjected to verification.\n\n    modelled means a previously calibrated model is used to estimate\n    this data point from other data points describing this Cycle.\n\n    estimated with assumptions means a documented assumption is used\n    to estimate this data point from other data points describing this Cycle.\n\n    consistent external sources means the data are taken from external\n    datasets referring to different producers/enterprises:\n\n        Using the same technology (defined as the same\n        System or the same key Practices\n        as those specified in the Cycle);\n\n        At the same date (defined as occurring within the\n        startDate and endDate of the Cycle);\n        and\n\n        In the same region or country.\n\n    Modelling or assumptions may have also been used to transform these data.\n\n    inconsistent external sources means the data are taken from external\n    datasets referring to different producers/enterprises:\n\n        Using a different technology (defined as a different\n        System or using different key\n        Practices to those specified in the Cycle);\n\n        At a different date (defined as occurring within the\n        startDate and endDate of the Cycle);\n        or\n\n        In a different region or country.\n\n    Modelling or assumptions may have also been used to transform these data.\n\n    expert opinion means the data have been estimated by experts in\n    the field.\n\n    unsourced assumption means the data do not have a clear source\n    and/or are based on assumptions only.\n",
      "examples": [
        "verified survey data",
        "non-verified survey data",
        "modelled"
      ],
      "enum": [
        "physical measurement",
        "verified survey data",
        "non-verified survey data",
        "modelled",
        "estimated with assumptions",
        "consistent external sources",
        "inconsistent external sources",
        "expert opinion",
        "unsourced assumption"
      ],
      "searchable": true,
      "exportDefaultCSV": true
    },
    "defaultMethodClassificationDescription": {
      "type": "string",
      "description": "A justification of the defaultMethodClassification used. If the data were estimated with assumptions this field should also describe the assumptions.",
      "examples": [
        "Data from a postal survey of 200 farms where researchers followed up with on-site visits to validate the data.",
        "A telephone survey of 50 farms.",
        "aggregated data"
      ],
      "exportDefaultCSV": true
    },
    "defaultSource": {
      "$ref": "./Source-deep.json#",
      "description": "The default Source for all data in the Cycle which can be overridden by specifying a source for each Input, Emission, Product, or Practice. Required for public uploads (i.e., where dataPrivate is false).",
      "examples": [
        {
          "@id": "source",
          "@type": "Source",
          "name": "Gigou (1990)"
        },
        {
          "@id": "source",
          "@type": "Source",
          "name": "Alvarez et al (2021)"
        },
        {
          "@type": "Source",
          "name": "HESTIA Team (2023)",
          "@id": "pu2wmwp8yfv7"
        }
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "recommended": true
    },
    "completeness": {
      "$ref": "./Completeness.json#",
      "description": "A specification of how complete the inputs and products data are. If an area of activity data is marked as complete, then the associated Inputs and Products represent a complete description of the Cycle.",
      "examples": [
        {
          "@type": "Completeness",
          "animalPopulation": true,
          "freshForage": true,
          "ingredient": true,
          "otherChemical": true,
          "operation": false,
          "electricityFuel": false,
          "material": true,
          "transport": true,
          "fertiliser": true,
          "soilAmendment": true,
          "pesticideVeterinaryDrug": true,
          "water": true,
          "animalFeed": true,
          "liveAnimalInput": true,
          "seed": false,
          "product": true,
          "cropResidue": false,
          "excreta": true,
          "waste": false
        },
        {
          "@type": "Completeness",
          "animalPopulation": true,
          "freshForage": false,
          "otherChemical": true,
          "ingredient": true,
          "operation": false,
          "electricityFuel": false,
          "material": false,
          "transport": false,
          "fertiliser": true,
          "soilAmendment": true,
          "pesticideVeterinaryDrug": true,
          "water": true,
          "animalFeed": true,
          "liveAnimalInput": true,
          "seed": true,
          "product": true,
          "cropResidue": false,
          "excreta": true,
          "waste": false
        },
        {
          "animalFeed": true,
          "animalPopulation": true,
          "cropResidue": false,
          "electricityFuel": true,
          "excreta": true,
          "fertiliser": true,
          "freshForage": true,
          "ingredient": true,
          "liveAnimalInput": true,
          "material": true,
          "operation": false,
          "otherChemical": true,
          "pesticideVeterinaryDrug": true,
          "product": true,
          "seed": true,
          "soilAmendment": true,
          "transport": false,
          "waste": false,
          "water": true,
          "@type": "Completeness"
        }
      ],
      "exportDefaultCSV": true,
      "searchable": true
    },
    "practices": {
      "type": "array",
      "items": {
        "$ref": "./Practice.json#"
      },
      "description": "The Practices used.",
      "examples": [
        [
          {
            "@type": "Practice",
            "term": {
              "@id": "croppingDuration",
              "@type": "Term",
              "name": "Cropping duration",
              "units": "days",
              "termType": "landUseManagement"
            },
            "value": [
              163
            ]
          },
          {
            "@type": "Practice",
            "term": {
              "@id": "shortFallowDuration",
              "@type": "Term",
              "name": "Short fallow duration",
              "units": "days",
              "termType": "landUseManagement"
            },
            "value": [
              50
            ]
          },
          {
            "@type": "Practice",
            "term": {
              "@id": "seedTreated",
              "@type": "Term",
              "name": "Seed treated",
              "termType": "cropEstablishment"
            }
          }
        ],
        [
          {
            "term": {
              "@type": "Term",
              "name": "Cropping intensity",
              "termType": "landUseManagement",
              "@id": "croppingIntensity",
              "units": "ratio"
            },
            "value": [
              0.26170096
            ],
            "@type": "Practice"
          },
          {
            "term": {
              "@type": "Term",
              "name": "Long fallow ratio",
              "termType": "landUseManagement",
              "@id": "longFallowRatio",
              "units": "ratio"
            },
            "value": [
              1.14453049
            ],
            "@type": "Practice"
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "sumIs100": [
        "primaryPercent"
      ],
      "uniqueArrayItem": [
        "term.@id",
        "key.@id",
        "dates",
        "startDate",
        "endDate",
        "areaPercent",
        "ownershipStatus",
        "variety",
        "site.id"
      ]
    },
    "animals": {
      "type": "array",
      "items": {
        "$ref": "./Animal.json#"
      },
      "description": "The types of Animal present.",
      "examples": [
        [
          {
            "@type": "Animal",
            "animalId": "young beef cattle heifer",
            "term": {
              "@id": "beefCattleHeifer",
              "@type": "Term",
              "name": "Beef cattle, heifer",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": 15,
            "referencePeriod": "average",
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "age",
                  "@type": "Term",
                  "name": "Age",
                  "units": "days",
                  "termType": "property"
                },
                "value": 730
              },
              {
                "@type": "Property",
                "term": {
                  "@id": "liveweightPerHead",
                  "@type": "Term",
                  "name": "Liveweight per head",
                  "units": "kg liveweight / head",
                  "termType": "property"
                },
                "value": 200
              }
            ]
          },
          {
            "@type": "Animal",
            "animalId": "mature beef cattle heifer",
            "term": {
              "@id": "beefCattleHeifer",
              "@type": "Term",
              "name": "Beef cattle, heifer",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": 10,
            "referencePeriod": "average",
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "age",
                  "@type": "Term",
                  "name": "Age",
                  "units": "days",
                  "termType": "property"
                },
                "value": 1095
              },
              {
                "@type": "Property",
                "term": {
                  "@id": "liveweightPerHead",
                  "@type": "Term",
                  "name": "Liveweight per head",
                  "units": "kg liveweight / head",
                  "termType": "property"
                },
                "value": 250
              }
            ]
          },
          {
            "@type": "Animal",
            "animalId": "beef cattle cow",
            "term": {
              "@id": "beefCattleCow",
              "@type": "Term",
              "name": "Beef cattle (cow)",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": 20,
            "referencePeriod": "average",
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "liveweightPerHead",
                  "@type": "Term",
                  "name": "Liveweight per head",
                  "units": "kg liveweight / head",
                  "termType": "property"
                },
                "value": 430
              }
            ]
          },
          {
            "@type": "Animal",
            "animalId": "beef cattle bull",
            "term": {
              "@id": "beefCattleBull",
              "@type": "Term",
              "name": "Beef cattle, bull",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": 1,
            "referencePeriod": "average",
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "liveweightPerHead",
                  "@type": "Term",
                  "name": "Liveweight per head",
                  "units": "kg liveweight / head",
                  "termType": "property"
                },
                "value": 500
              }
            ]
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "uniqueArrayItem": [
        "animalId"
      ]
    },
    "inputs": {
      "type": "array",
      "items": {
        "$ref": "./Input.json#"
      },
      "description": "The Inputs used.",
      "examples": [
        [
          {
            "@type": "Input",
            "term": {
              "@id": "CAS-34494-04-7",
              "@type": "Term",
              "name": "Glyphosate",
              "units": "g active ingredient",
              "termType": "pesticideAI"
            },
            "value": [
              400
            ],
            "sd": [
              180
            ],
            "statsDefinition": "replications",
            "observations": [
              10
            ]
          },
          {
            "@type": "Input",
            "term": {
              "@id": "ureaKgN",
              "@type": "Term",
              "name": "Urea (kg N)",
              "units": "kg N",
              "termType": "inorganicFertiliser"
            },
            "value": [
              40
            ],
            "transport": [
              {
                "@type": "Transport",
                "term": {
                  "@id": "freightLorry32MetricTon",
                  "@type": "Term",
                  "name": "Freight, lorry, >32 metric ton",
                  "units": "tkm",
                  "termType": "transport"
                },
                "value": 8,
                "returnLegIncluded": false,
                "methodClassification": "estimated with assumptions",
                "methodClassificationDescription": "Distance estimated using approximate road distance to likely supplier, assuming 100% load factor.",
                "emissions": [
                  {
                    "@type": "Emission",
                    "term": {
                      "@id": "co2ToAirFuelCombustion",
                      "@type": "Term",
                      "name": "CO2, to air, fuel combustion",
                      "units": "kg CO2",
                      "termType": "emission"
                    },
                    "value": [
                      0.7
                    ],
                    "methodModel": {
                      "@id": "emepEea2019",
                      "@type": "Term",
                      "name": "EMEA-EEA (2019)",
                      "termType": "model"
                    },
                    "methodTier": "tier 1"
                  }
                ]
              }
            ]
          },
          {
            "@type": "Input",
            "term": {
              "@id": "electricityGridMarketMix",
              "@type": "Term",
              "name": "Electricity, grid, market mix",
              "units": "kWh",
              "termType": "electricity"
            },
            "value": [
              600
            ]
          },
          {
            "@type": "Input",
            "term": {
              "@id": "fixedNitrogenFromPreviousCropKgN",
              "@type": "Term",
              "name": "Fixed nitrogen, from previous crop (kg N)",
              "units": "kg N",
              "termType": "organicFertiliser"
            },
            "value": [
              40
            ],
            "methodClassification": "modelled",
            "methodClassificationDescription": "Modelled using a simple model which links nitrogen fixation to nitrogen fertiliser input (Jensen, 1987, Plant and Soil)."
          }
        ],
        [
          {
            "@type": "Input",
            "term": {
              "@id": "lime",
              "@type": "Term",
              "name": "Lime",
              "units": "kg CaCO3",
              "termType": "soilAmendment"
            },
            "value": [
              250
            ]
          },
          {
            "@type": "Input",
            "term": {
              "@id": "beefCattleCalfWeaned",
              "@type": "Term",
              "name": "Beef cattle, calf (weaned)",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": [
              4
            ]
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "uniqueArrayItem": [
        "term.@id",
        "dates",
        "startDate",
        "endDate",
        "isAnimalFeed",
        "producedInCycle",
        "transport.term.@id",
        "operation.@id",
        "country.@id",
        "region.@id",
        "impactAssessment.id",
        "site.id",
        "variety",
        "fate"
      ]
    },
    "products": {
      "type": "array",
      "items": {
        "$ref": "./Product.json#"
      },
      "description": "The Products created.",
      "examples": [
        [
          {
            "@type": "Product",
            "term": {
              "@id": "wheatGrain",
              "@type": "Term",
              "name": "Wheat, grain",
              "units": "kg",
              "termType": "crop"
            },
            "value": [
              7282
            ],
            "primary": true,
            "economicValueShare": 94.8,
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "dryMatter",
                  "@type": "Term",
                  "name": "Dry matter",
                  "units": "%",
                  "termType": "property"
                },
                "value": 80
              }
            ]
          },
          {
            "@type": "Product",
            "term": {
              "@id": "wheatStraw",
              "@type": "Term",
              "name": "Wheat, straw",
              "units": "kg",
              "termType": "crop"
            },
            "value": [
              40
            ],
            "economicValueShare": 5.2
          }
        ],
        [
          {
            "@type": "Product",
            "term": {
              "@id": "beefCattle",
              "@type": "Term",
              "name": "Beef cattle",
              "units": "number",
              "termType": "liveAnimal"
            },
            "value": [
              10
            ],
            "properties": [
              {
                "@type": "Property",
                "term": {
                  "@id": "processingConversionLiveweightToColdDressedCarcassWeight",
                  "@type": "Term",
                  "name": "Processing conversion, liveweight to cold dressed carcass weight",
                  "units": "%",
                  "termType": "property"
                },
                "value": 48
              }
            ]
          },
          {
            "@type": "Product",
            "term": {
              "@id": "excretaBeefCattleExceptFeedlotFedKgMass",
              "@type": "Term",
              "name": "Excreta, beef cattle, except feedlot fed (kg mass)",
              "units": "kg",
              "termType": "excreta"
            },
            "value": [
              1050
            ]
          }
        ],
        [
          {
            "term": {
              "@type": "Term",
              "termType": "crop",
              "name": "African aubergine, fruit",
              "units": "kg",
              "@id": "africanAubergineFruit"
            },
            "value": [
              16923
            ],
            "economicValueShare": 99.98,
            "primary": true,
            "@type": "Product"
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "uniquePrimaryItem": true,
      "uniqueArrayItem": [
        "term.@id",
        "dates",
        "startDate",
        "endDate",
        "variety",
        "fate"
      ]
    },
    "transformations": {
      "type": "array",
      "items": {
        "$ref": "./Transformation.json#"
      },
      "description": "The Transformations applied to products generated from this Cycle.",
      "examples": [
        [
          {
            "@type": "Transformation",
            "transformationId": "excreta-on-pasture",
            "term": {
              "@id": "pastureRangePaddockExcretaManagement",
              "@type": "Term",
              "name": "Pasture/Range/Paddock (excreta management)",
              "termType": "excretaManagement"
            },
            "inputs": [
              {
                "@type": "Input",
                "term": {
                  "@id": "excretaBeefCattleExceptFeedlotFedKgMass",
                  "@type": "Term",
                  "name": "Excreta, beef cattle, except feedlot fed (kg mass)",
                  "units": "kg",
                  "termType": "excreta"
                },
                "value": [
                  840
                ],
                "fromCycle": false
              }
            ],
            "transformedShare": 80
          },
          {
            "@type": "Transformation",
            "transformationId": "pit-storage",
            "term": {
              "@id": "pitStorageBelowAnimalConfinements",
              "@type": "Term",
              "name": "Pit storage below animal confinements",
              "termType": "excretaManagement"
            },
            "inputs": [
              {
                "@type": "Input",
                "term": {
                  "@id": "excretaBeefCattleExceptFeedlotFedKgMass",
                  "@type": "Term",
                  "name": "Excreta, beef cattle, except feedlot fed (kg mass)",
                  "units": "kg",
                  "termType": "excreta"
                },
                "value": [
                  210
                ],
                "fromCycle": false
              }
            ],
            "transformedShare": 20
          },
          {
            "@type": "Transformation",
            "transformationId": "lagoon",
            "term": {
              "@id": "liquidSlurry",
              "@type": "Term",
              "name": "Liquid/Slurry",
              "termType": "excretaManagement"
            },
            "inputs": [
              {
                "@type": "Input",
                "term": {
                  "@id": "excretaBeefCattleExceptFeedlotFedKgMass",
                  "@type": "Term",
                  "name": "Excreta, beef cattle, except feedlot fed (kg mass)",
                  "units": "kg",
                  "termType": "excreta"
                },
                "fromCycle": false
              }
            ],
            "transformedShare": 100,
            "previousTransformationId": "pit-storage"
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "uniqueArrayItem": [
        "transformationId"
      ]
    },
    "emissions": {
      "type": "array",
      "items": {
        "$ref": "./Emission.json#"
      },
      "description": "The Emissions created.",
      "examples": [
        [
          {
            "@type": "Emission",
            "term": {
              "@id": "no3ToGroundwaterSoilFlux",
              "@type": "Term",
              "name": "NO3, to groundwater, soil flux",
              "units": "kg NO3",
              "termType": "emission"
            },
            "value": [
              60.75,
              70.5
            ],
            "dates": [
              "1989-06-16",
              "1989-08-01"
            ],
            "methodModel": {
              "@id": "percolationLysimeter",
              "@type": "Term",
              "name": "Percolation lysimeter",
              "termType": "methodEmissionResourceUse"
            },
            "methodTier": "measured",
            "source": {
              "@id": "source-8v5",
              "@type": "Source",
              "name": "Murwira (1993)"
            }
          },
          {
            "@type": "Emission",
            "term": {
              "@id": "n2OToAirInorganicFertiliserDirect",
              "@type": "Term",
              "name": "N2O, to air, inorganic fertiliser, direct",
              "units": "kg N2O",
              "termType": "emission"
            },
            "value": [
              0.628
            ],
            "methodModel": {
              "@id": "ipcc2006",
              "@type": "Term",
              "name": "IPCC (2006)",
              "termType": "model"
            },
            "methodTier": "tier 1"
          },
          {
            "@type": "Emission",
            "term": {
              "@id": "so2ToAirInputsProduction",
              "@type": "Term",
              "name": "SO2, to air, inputs production",
              "units": "kg SO2",
              "termType": "emission"
            },
            "value": [
              2.11
            ],
            "methodModel": {
              "@id": "ecoinventV3",
              "@type": "Term",
              "name": "ecoinvent v3",
              "termType": "model"
            },
            "methodTier": "background",
            "inputs": [
              {
                "@id": "electricityGridMarketMix",
                "@type": "Term",
                "name": "Electricity, grid, market mix",
                "termType": "electricity"
              }
            ]
          }
        ],
        [
          {
            "term": {
              "@type": "Term",
              "name": "NOx, to air, inputs production",
              "termType": "emission",
              "@id": "noxToAirInputsProduction",
              "units": "kg NOx"
            },
            "value": [
              0.124
            ],
            "methodTier": "not relevant",
            "methodModel": {
              "@type": "Term",
              "name": "Aggregated models",
              "termType": "model",
              "@id": "aggregatedModels"
            },
            "@type": "Emission"
          },
          {
            "term": {
              "@type": "Term",
              "name": "CO2, to air, organic soil cultivation",
              "termType": "emission",
              "@id": "co2ToAirOrganicSoilCultivation",
              "units": "kg CO2"
            },
            "value": [
              509
            ],
            "methodTier": "not relevant",
            "methodModel": {
              "@type": "Term",
              "name": "Aggregated models",
              "termType": "model",
              "@id": "aggregatedModels"
            },
            "@type": "Emission"
          },
          {
            "term": {
              "@type": "Term",
              "name": "NO3, to groundwater, crop residue decomposition",
              "termType": "emission",
              "@id": "no3ToGroundwaterCropResidueDecomposition",
              "units": "kg NO3"
            },
            "value": [
              3.18
            ],
            "methodTier": "not relevant",
            "methodModel": {
              "@type": "Term",
              "name": "Aggregated models",
              "termType": "model",
              "@id": "aggregatedModels"
            },
            "@type": "Emission"
          }
        ]
      ],
      "searchable": true,
      "exportDefaultCSV": true,
      "uniqueArrayItem": [
        "term.@id",
        "key.@id",
        "dates",
        "startDate",
        "endDate",
        "depthUpper",
        "depthLower",
        "inputs.@id",
        "animals.@id",
        "transport.@id",
        "operation.@id",
        "transformation.@id",
        "site.id",
        "country.@id"
      ]
    },
    "dataPrivate": {
      "type": "boolean",
      "description": "If these data are private. Private means that HESTIA administrators can access these data and you can grant access to other platform users, but these data will not be made available to any other users of the platform or distributed to third parties.",
      "examples": [],
      "default": false
    },
    "originalId": {
      "type": "string",
      "description": "The identifier for these data in the source database (e.g., if the data were converted from openLCA or ecoinvent, the id field from that database).",
      "examples": [],
      "internal": true
    },
    "schemaVersion": {
      "type": "string",
      "description": "The version of the schema when these data were created.",
      "examples": [],
      "internal": true,
      "searchable": true
    },
    "added": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of fields that have been added to the original dataset.",
      "examples": [],
      "internal": true
    },
    "addedVersion": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of versions of the model used to add these fields.",
      "examples": [],
      "internal": true
    },
    "updated": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of fields that have been updated on the original dataset.",
      "examples": [],
      "internal": true
    },
    "updatedVersion": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "A list of versions of the model used to update these fields.",
      "examples": [],
      "internal": true
    },
    "aggregated": {
      "type": "boolean",
      "description": "If this Cycle has been 'aggregated' using data from multiple Cycles.",
      "examples": [
        true
      ],
      "internal": true,
      "searchable": true
    },
    "aggregatedDataValidated": {
      "type": "boolean",
      "description": "If this aggregated Cycle has been validated by the HESTIA team.",
      "examples": [],
      "internal": true,
      "searchable": true
    },
    "aggregatedVersion": {
      "type": "string",
      "description": "A version of the aggregation engine corresponding to this Cycle.",
      "examples": [],
      "internal": true
    },
    "aggregatedQualityScore": {
      "type": "integer",
      "description": "A data quality score for aggregated data. The points depend on the primary Product ofthe aggregation. One point is awarded for each of the categories satisfied, according to the table below. For global\naggregations, an additional point is awarded for both farm-stage and processing aggregations if the aggregation\nincludes countries representing over 75% of production of the farm-gate product. The global aggregation is then scored\nout of 4 or 5 for processing and crop respectively.\n\n| Primary Product | Emissions | Number of Cycles | Yield | Completeness |\n| --- | --- | --- | --- | --- |\n| Crop | No emissions included in the system boundary are missing | Over 50 Cycles | Within +/- 20% of FAOSTAT yield for the primary Product | True for all priority areas (animalFeed, cropResidue, electricityFuel, excreta, fertiliser, freshForage, ingredient, liveAnimalInput, otherChemical, pesticdieVetinaryDrug, product, seed, water) |\n| Processed food | No emissions included in the system boundary are missing | Over 10 Cycles | -  | True for all priority areas True for all priority areas (electricityFuel, ingredient, product, water) |\n",
      "examples": [
        1
      ],
      "minimum": 0,
      "internal": true,
      "searchable": true
    },
    "aggregatedQualityScoreMax": {
      "type": "integer",
      "description": "The maximum value for the aggregated quality score.",
      "examples": [
        4
      ],
      "minimum": 3,
      "internal": true,
      "searchable": true
    },
    "aggregatedCycles": {
      "type": "array",
      "items": {
        "$ref": "./Cycle-deep.json#"
      },
      "description": "Cycles used to aggregated this Cycle.",
      "examples": [],
      "internal": true
    },
    "aggregatedSources": {
      "type": "array",
      "items": {
        "$ref": "./Source-deep.json#"
      },
      "description": "Sources used to aggregated this Cycle.",
      "examples": [],
      "internal": true
    },
    "covarianceMatrixIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "An array of strings which are the column column/row headers of the covarianceMatrix.",
      "examples": [
        [
          "practices.croppingIntensity",
          "practices.longFallowRatio",
          "products.africanAubergineFruit",
          "emissions.noxToAirInputsProduction",
          "emissions.co2ToAirOrganicSoilCultivation",
          "emissions.no3ToGroundwaterCropResidueDecomposition"
        ]
      ],
      "internal": true
    },
    "covarianceMatrix": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "description": "For aggregated cycles only, a covariance matrix, represented using the lower triangle only. The covariance matrix describes the covariance between all data items in the Cycle. It is used to generate the distributions of Impact Assessment Indicators. E.g., it contains the covariance between one emission and another. It controls for the fact that data items in the Cycle often covary with another. This covariance generally reduces the variability in the distributions of Indicators.",
      "examples": [
        [
          [
            20,
            0,
            0,
            0,
            0,
            0
          ],
          [
            30,
            40,
            0,
            0,
            0,
            0
          ],
          [
            10,
            60,
            90,
            0,
            0,
            0
          ],
          [
            4,
            -25,
            -88,
            10,
            0,
            0
          ],
          [
            0.6,
            -10,
            -90,
            11,
            30,
            0
          ],
          [
            75,
            20,
            -15,
            -70,
            2,
            35
          ]
        ]
      ],
      "internal": true
    },
    "createdAt": {
      "type": "string",
      "description": "Date created on HESTIA in ISO 8601 format (YYYY-MM-DD).",
      "examples": [],
      "format": "date",
      "internal": true,
      "searchable": true
    },
    "updatedAt": {
      "type": "string",
      "description": "Last update date on HESTIA in ISO 8601 format (YYYY-MM-DD).",
      "examples": [],
      "format": "date",
      "internal": true,
      "searchable": true
    }
  },
  "allOf": [
    {
      "if": {
        "required": [
          "dataPrivate"
        ],
        "properties": {
          "dataPrivate": {
            "const": false
          }
        }
      },
      "then": {
        "required": [
          "defaultSource"
        ]
      }
    },
    {
      "if": {
        "required": [
          "functionalUnit",
          "products",
          "site"
        ],
        "properties": {
          "products": {
            "contains": {
              "required": [
                "primary"
              ],
              "properties": {
                "term": {
                  "required": [
                    "termType"
                  ],
                  "properties": {
                    "termType": {
                      "enum": [
                        "crop",
                        "forage"
                      ]
                    }
                  }
                },
                "primary": {
                  "const": true
                }
              }
            }
          },
          "site": {
            "required": [
              "siteType"
            ],
            "properties": {
              "siteType": {
                "enum": [
                  "cropland",
                  "glass or high accessible cover"
                ]
              }
            }
          }
        }
      },
      "then": {
        "properties": {
          "functionalUnit": {
            "const": "1 ha"
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "products",
          "site"
        ],
        "properties": {
          "site": {
            "required": [
              "siteType"
            ],
            "properties": {
              "siteType": {
                "enum": [
                  "animal housing"
                ]
              }
            }
          },
          "otherSites": {
            "items": {
              "required": [
                "siteType"
              ],
              "properties": {
                "siteType": {
                  "enum": [
                    "animal housing",
                    "agri-food processor",
                    "retailer"
                  ]
                }
              }
            }
          }
        }
      },
      "then": {
        "properties": {
          "products": {
            "items": {
              "not": {
                "properties": {
                  "term": {
                    "required": [
                      "termType"
                    ],
                    "properties": {
                      "termType": {
                        "enum": [
                          "crop",
                          "forage"
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "anyOf": [
          {
            "required": [
              "startDate"
            ]
          },
          {
            "required": [
              "cycleDuration"
            ]
          }
        ]
      },
      "then": {
        "required": [
          "startDateDefinition"
        ]
      }
    },
    {
      "if": {
        "required": [
          "otherSitesDuration"
        ]
      },
      "then": {
        "required": [
          "otherSites"
        ]
      }
    },
    {
      "if": {
        "required": [
          "otherSitesArea"
        ]
      },
      "then": {
        "required": [
          "otherSites"
        ]
      }
    },
    {
      "if": {
        "required": [
          "functionalUnit"
        ],
        "properties": {
          "functionalUnit": {
            "const": "1 ha"
          }
        }
      },
      "then": {
        "not": {
          "required": [
            "otherSites"
          ]
        }
      }
    },
    {
      "if": {
        "required": [
          "treatment"
        ]
      },
      "then": {
        "required": [
          "commercialPracticeTreatment"
        ]
      }
    },
    {
      "if": {
        "required": [
          "inputs"
        ]
      },
      "then": {
        "properties": {
          "inputs": {
            "items": {
              "not": {
                "required": [
                  "fromCycle"
                ]
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "inputs"
        ]
      },
      "then": {
        "properties": {
          "inputs": {
            "items": {
              "not": {
                "required": [
                  "fate"
                ]
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "inputs"
        ]
      },
      "then": {
        "properties": {
          "inputs": {
            "items": {
              "if": {
                "required": [
                  "term"
                ],
                "properties": {
                  "term": {
                    "required": [
                      "termType"
                    ],
                    "properties": {
                      "termType": {
                        "const": "material"
                      }
                    }
                  }
                }
              },
              "then": {
                "properties": {
                  "term": {
                    "properties": {
                      "units": {
                        "const": "kg/functional unit/Cycle"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "startDateDefinition",
          "cycleDuration"
        ],
        "properties": {
          "startDateDefinition": {
            "const": "one year prior"
          }
        }
      },
      "then": {
        "properties": {
          "cycleDuration": {
            "enum": [
              365,
              366
            ]
          }
        }
      }
    },
    {
      "if": {
        "required": [
          "startDateDefinition",
          "startDate"
        ],
        "properties": {
          "startDateDefinition": {
            "const": "start of year"
          }
        }
      },
      "then": {
        "properties": {
          "startDate": {
            "pattern": "^[0-9]{4}(-01)?(-01)?$"
          }
        }
      }
    },
    {
      "if": {
        "anyOf": [
          {
            "required": [
              "covarianceMatrixIds"
            ]
          },
          {
            "required": [
              "covarianceMatrix"
            ]
          }
        ]
      },
      "then": {
        "required": [
          "covarianceMatrixIds",
          "covarianceMatrix"
        ]
      }
    },
    {
      "if": {
        "required": [
          "functionalUnit",
          "siteArea"
        ],
        "properties": {
          "functionalUnit": {
            "const": "1 ha"
          }
        }
      },
      "then": {
        "properties": {
          "siteArea": {
            "const": 1
          }
        }
      }
    }
  ],
  "oneOf": [
    {
      "required": [
        "@type",
        "@id"
      ]
    },
    {
      "required": [
        "type",
        "id"
      ]
    }
  ]
}