hestia-earth-models 0.73.7__py3-none-any.whl → 0.74.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of hestia-earth-models might be problematic. Click here for more details.

Files changed (99) hide show
  1. hestia_earth/models/aware/scarcityWeightedWaterUse.py +7 -6
  2. hestia_earth/models/aware2_0/__init__.py +14 -0
  3. hestia_earth/models/aware2_0/scarcityWeightedWaterUse.py +115 -0
  4. hestia_earth/models/config/Cycle.json +121 -29
  5. hestia_earth/models/config/ImpactAssessment.json +240 -200
  6. hestia_earth/models/config/__init__.py +26 -2
  7. hestia_earth/models/cycle/animal/input/hestiaAggregatedData.py +2 -2
  8. hestia_earth/models/cycle/animal/input/properties.py +6 -5
  9. hestia_earth/models/cycle/animal/milkYield.py +8 -3
  10. hestia_earth/models/cycle/utils.py +6 -6
  11. hestia_earth/models/dammgen2009/noxToAirExcreta.py +11 -9
  12. hestia_earth/models/data/ecoinventV3/__init__.py +8 -26
  13. hestia_earth/models/ecoalimV9/cycle.py +51 -45
  14. hestia_earth/models/ecoalimV9/impact_assessment.py +63 -45
  15. hestia_earth/models/ecoalimV9/utils.py +21 -15
  16. hestia_earth/models/ecoinventV3/__init__.py +8 -140
  17. hestia_earth/models/ecoinventV3/cycle.py +140 -0
  18. hestia_earth/models/ecoinventV3/utils.py +28 -1
  19. hestia_earth/models/ecoinventV3AndEmberClimate/__init__.py +8 -137
  20. hestia_earth/models/ecoinventV3AndEmberClimate/cycle.py +144 -0
  21. hestia_earth/models/emepEea2019/n2OToAirFuelCombustionDirect.py +2 -2
  22. hestia_earth/models/emepEea2019/utils.py +2 -3
  23. hestia_earth/models/environmentalFootprintV3_1/environmentalFootprintSingleOverallScore.py +5 -7
  24. hestia_earth/models/frischknechtEtAl2000/ionisingRadiationKbqU235Eq.py +41 -43
  25. hestia_earth/models/geospatialDatabase/awareWaterBasinId.py +2 -2
  26. hestia_earth/models/geospatialDatabase/awareWaterBasinId_v1.py +45 -0
  27. hestia_earth/models/hestia/default_emissions.py +7 -7
  28. hestia_earth/models/hestia/default_resourceUse.py +7 -6
  29. hestia_earth/models/hestia/landCover.py +110 -12
  30. hestia_earth/models/hestia/seed_emissions.py +7 -3
  31. hestia_earth/models/hestia/utils.py +1 -0
  32. hestia_earth/models/hestia/waterSalinity.py +2 -3
  33. hestia_earth/models/impact_assessment/emissions.py +3 -5
  34. hestia_earth/models/ipcc2019/biocharOrganicCarbonPerHa.py +9 -3
  35. hestia_earth/models/ipcc2019/co2ToAirAboveGroundBiomassStockChange.py +1 -5
  36. hestia_earth/models/ipcc2019/co2ToAirBelowGroundBiomassStockChange.py +1 -5
  37. hestia_earth/models/ipcc2019/co2ToAirCarbonStockChange_utils.py +1 -33
  38. hestia_earth/models/ipcc2019/co2ToAirSoilOrganicCarbonStockChange.py +1 -5
  39. hestia_earth/models/ipcc2019/n2OToAirAquacultureSystemsIndirect.py +44 -0
  40. hestia_earth/models/ipcc2019/n2OToAirCropResidueBurningIndirect.py +43 -0
  41. hestia_earth/models/ipcc2019/n2OToAirCropResidueDecompositionIndirect.py +13 -70
  42. hestia_earth/models/ipcc2019/n2OToAirExcretaIndirect.py +13 -70
  43. hestia_earth/models/ipcc2019/n2OToAirFuelCombustionIndirect.py +43 -0
  44. hestia_earth/models/ipcc2019/n2OToAirInorganicFertiliserIndirect.py +13 -70
  45. hestia_earth/models/ipcc2019/n2OToAirNaturalVegetationBurningIndirect.py +43 -0
  46. hestia_earth/models/ipcc2019/n2OToAirOrganicFertiliserIndirect.py +13 -70
  47. hestia_earth/models/ipcc2019/n2OToAirOrganicSoilBurningIndirect.py +43 -0
  48. hestia_earth/models/ipcc2019/n2OToAirOrganicSoilCultivationIndirect.py +43 -0
  49. hestia_earth/models/ipcc2019/n2OToAir_indirect_emissions_utils.py +112 -0
  50. hestia_earth/models/ipcc2019/utils.py +0 -25
  51. hestia_earth/models/jarvisAndPain1994/n2ToAirExcreta.py +11 -9
  52. hestia_earth/models/linkedImpactAssessment/emissions.py +25 -16
  53. hestia_earth/models/linkedImpactAssessment/utils.py +5 -1
  54. hestia_earth/models/log.py +8 -3
  55. hestia_earth/models/mocking/search-results.json +1670 -1666
  56. hestia_earth/models/utils/__init__.py +3 -0
  57. hestia_earth/models/utils/background_emissions.py +121 -14
  58. hestia_earth/models/utils/blank_node.py +1 -11
  59. hestia_earth/models/utils/emission.py +18 -8
  60. hestia_earth/models/utils/feedipedia.py +2 -2
  61. hestia_earth/models/utils/impact_assessment.py +4 -6
  62. hestia_earth/models/utils/indicator.py +8 -1
  63. hestia_earth/models/utils/lookup.py +30 -18
  64. hestia_earth/models/utils/productivity.py +1 -1
  65. hestia_earth/models/version.py +1 -1
  66. hestia_earth/orchestrator/log.py +8 -3
  67. hestia_earth/orchestrator/strategies/merge/merge_list.py +41 -54
  68. {hestia_earth_models-0.73.7.dist-info → hestia_earth_models-0.74.0.dist-info}/METADATA +3 -3
  69. {hestia_earth_models-0.73.7.dist-info → hestia_earth_models-0.74.0.dist-info}/RECORD +99 -75
  70. tests/models/aware2_0/__init__.py +0 -0
  71. tests/models/aware2_0/test_scarcityWeightedWaterUse.py +58 -0
  72. tests/models/dammgen2009/test_noxToAirExcreta.py +2 -2
  73. tests/models/ecoalimV9/test_cycle.py +1 -1
  74. tests/models/ecoalimV9/test_impact_assessment.py +1 -1
  75. tests/models/ecoinventV3/__init__.py +0 -0
  76. tests/models/{test_ecoinventV3.py → ecoinventV3/test_cycle.py} +5 -5
  77. tests/models/ecoinventV3AndEmberClimate/__init__.py +0 -0
  78. tests/models/{test_ecoinventV3AndEmberClimate.py → ecoinventV3AndEmberClimate/test_cycle.py} +6 -4
  79. tests/models/environmentalFootprintV3_1/test_environmentalFootprintSingleOverallScore.py +2 -2
  80. tests/models/frischknechtEtAl2000/test_ionisingRadiationKbqU235Eq.py +18 -27
  81. tests/models/hestia/test_landCover.py +16 -6
  82. tests/models/ipcc2019/test_biocharOrganicCarbonPerHa.py +2 -1
  83. tests/models/ipcc2019/test_n2OToAirAquacultureSystemsIndirect.py +45 -0
  84. tests/models/ipcc2019/test_n2OToAirCropResidueBurningIndirect.py +45 -0
  85. tests/models/ipcc2019/test_n2OToAirCropResidueDecompositionIndirect.py +6 -32
  86. tests/models/ipcc2019/test_n2OToAirExcretaIndirect.py +6 -32
  87. tests/models/ipcc2019/test_n2OToAirFuelCombustionIndirect.py +45 -0
  88. tests/models/ipcc2019/test_n2OToAirInorganicFertiliserIndirect.py +6 -32
  89. tests/models/ipcc2019/test_n2OToAirNaturalVegetationBurningIndirect.py +45 -0
  90. tests/models/ipcc2019/test_n2OToAirOrganicFertiliserIndirect.py +6 -32
  91. tests/models/ipcc2019/test_n2OToAirOrganicSoilBurningIndirect.py +45 -0
  92. tests/models/ipcc2019/test_n2OToAirOrganicSoilCultivationIndirect.py +45 -0
  93. tests/models/ipcc2019/test_n2OToAir_indirect_emissions_utils.py +19 -0
  94. tests/models/site/pre_checks/test_cache_geospatialDatabase.py +4 -4
  95. tests/models/test_config.py +53 -7
  96. tests/models/utils/test_background_emissions.py +13 -0
  97. {hestia_earth_models-0.73.7.dist-info → hestia_earth_models-0.74.0.dist-info}/LICENSE +0 -0
  98. {hestia_earth_models-0.73.7.dist-info → hestia_earth_models-0.74.0.dist-info}/WHEEL +0 -0
  99. {hestia_earth_models-0.73.7.dist-info → hestia_earth_models-0.74.0.dist-info}/top_level.txt +0 -0
@@ -38,8 +38,8 @@ RETURNS = {
38
38
  }
39
39
  LOOKUPS = {
40
40
  "@doc": "Different lookup files are used depending on the situation",
41
- "awareWaterBasinId": "",
42
- "region-aware-factors": ""
41
+ "awareWaterBasinId": ["YR_IRRI", "YR_NONIRRI", "YR_TOT"],
42
+ "region-aware-factors": ["Agg_CF_irri", "Agg_CF_non_irri", "Agg_CF_unspecified"]
43
43
  }
44
44
  TERM_ID = 'scarcityWeightedWaterUse'
45
45
  AWARE_KEY = 'awareWaterBasinId'
@@ -48,6 +48,8 @@ IRRIGATED_SITE_TYPES = [
48
48
  SiteSiteType.GLASS_OR_HIGH_ACCESSIBLE_COVER.value,
49
49
  SiteSiteType.PERMANENT_PASTURE.value
50
50
  ]
51
+ _REGION_LOOKUP = 'region-aware-factors.csv'
52
+ _AWARE_LOOKUP = 'awareWaterBasinId.csv'
51
53
 
52
54
 
53
55
  def _indicator(value: float):
@@ -59,19 +61,18 @@ def _indicator(value: float):
59
61
  def _get_factor_from_basinId(site: dict, aware_id: str):
60
62
  lookup_col = 'YR_IRRI' if site.get('siteType') in IRRIGATED_SITE_TYPES else 'YR_NONIRRI'
61
63
  value = _get_single_table_value(
62
- download_lookup(f"{AWARE_KEY}.csv"), column_name(AWARE_KEY), int(aware_id), column_name(lookup_col)
64
+ download_lookup(_AWARE_LOOKUP), column_name(AWARE_KEY), int(aware_id), column_name(lookup_col)
63
65
  )
64
- debugMissingLookup(f"{AWARE_KEY}.csv", AWARE_KEY, aware_id, lookup_col, value, model=MODEL, term=TERM_ID)
66
+ debugMissingLookup(_AWARE_LOOKUP, AWARE_KEY, aware_id, lookup_col, value, model=MODEL, term=TERM_ID)
65
67
  return safe_parse_float(value, default=None)
66
68
 
67
69
 
68
70
  def _get_factor_from_region(impact_assessment: dict, fresh_water: dict, site: dict):
69
71
  region_id = get_region_id(impact_assessment, fresh_water)
70
72
  site_type = site.get('siteType')
71
- lookup_name = 'region-aware-factors.csv'
72
73
  lookup_suffix = 'unspecified' if not site_type else ('irri' if site_type in IRRIGATED_SITE_TYPES else 'non_irri')
73
74
  column = f"Agg_CF_{lookup_suffix}"
74
- value = get_region_lookup_value(lookup_name, region_id, column, model=MODEL, term=TERM_ID)
75
+ value = get_region_lookup_value(_REGION_LOOKUP, region_id, column, model=MODEL, term=TERM_ID)
75
76
  return safe_parse_float(value, default=None)
76
77
 
77
78
 
@@ -0,0 +1,14 @@
1
+ import sys
2
+ from importlib import import_module
3
+ from os.path import dirname, abspath
4
+
5
+ from hestia_earth.models.utils.blank_node import run_if_required
6
+
7
+ CURRENT_DIR = dirname(abspath(__file__)) + '/'
8
+ sys.path.append(CURRENT_DIR)
9
+ MODEL = 'aware2-0'
10
+ MODEL_FOLDER = MODEL.replace('-', '_')
11
+ PKG = '.'.join(['hestia_earth', 'models', MODEL_FOLDER])
12
+
13
+
14
+ def run(model: str, data): return run_if_required(MODEL, model, data, import_module(f".{model}", package=PKG))
@@ -0,0 +1,115 @@
1
+ from hestia_earth.schema import SiteSiteType
2
+ from hestia_earth.utils.model import find_term_match
3
+ from hestia_earth.utils.lookup import download_lookup, _get_single_table_value, column_name
4
+ from hestia_earth.utils.tools import safe_parse_float
5
+
6
+ from hestia_earth.models.log import logRequirements, debugMissingLookup, logShouldRun
7
+ from hestia_earth.models.utils import sum_values, multiply_values
8
+ from hestia_earth.models.utils.indicator import _new_indicator
9
+ from hestia_earth.models.utils.impact_assessment import (
10
+ convert_value_from_cycle, get_product, get_site, get_region_id
11
+ )
12
+ from hestia_earth.models.utils.input import sum_input_impacts
13
+ from hestia_earth.models.utils.lookup import get_region_lookup_value
14
+ from . import MODEL
15
+
16
+ REQUIREMENTS = {
17
+ "ImpactAssessment": {
18
+ "site": {
19
+ "@type": "Site",
20
+ "or": {
21
+ "awareWaterBasinId": "",
22
+ "country": {"@type": "Term", "termType": "region"}
23
+ }
24
+ },
25
+ "optional": {
26
+ "emissionsResourceUse": [{
27
+ "@type": "Indicator",
28
+ "term.@id": "freshwaterWithdrawalsDuringCycle",
29
+ "value": ""
30
+ }]
31
+ }
32
+ }
33
+ }
34
+ RETURNS = {
35
+ "Indicator": [{
36
+ "value": ""
37
+ }]
38
+ }
39
+ LOOKUPS = {
40
+ "@doc": "Different lookup files are used depending on the situation",
41
+ "awareWaterBasinId-2-0": ["CFs_agri", "CFs_nonagri", "CFs_unspecified"],
42
+ "region-aware-2-0-factors": ["CFs_agri", "CFs_nonagri", "CFs_unspecified"]
43
+ }
44
+ TERM_ID = 'scarcityWeightedWaterUse'
45
+ AWARE_KEY = 'awareWaterBasinId'
46
+ AGRI_SITE_TYPES = [
47
+ SiteSiteType.CROPLAND.value,
48
+ SiteSiteType.GLASS_OR_HIGH_ACCESSIBLE_COVER.value,
49
+ SiteSiteType.PERMANENT_PASTURE.value
50
+ ]
51
+ _REGION_LOOKUP = 'region-aware-2-0-factors.csv'
52
+ _AWARE_LOOKUP = 'awareWaterBasinId-2-0.csv'
53
+
54
+
55
+ def _indicator(value: float):
56
+ indicator = _new_indicator(TERM_ID, MODEL)
57
+ indicator['value'] = value
58
+ return indicator
59
+
60
+
61
+ def _lookup_column(site: dict):
62
+ site_type = site.get('siteType')
63
+ return (
64
+ 'CFs_unspecified' if not site_type else
65
+ 'CFs_agri' if site_type in AGRI_SITE_TYPES else
66
+ 'CFs_nonagri'
67
+ )
68
+
69
+
70
+ def _get_factor_from_basinId(site: dict, aware_id: str):
71
+ lookup_col = _lookup_column(site)
72
+ lookup = download_lookup(_AWARE_LOOKUP)
73
+ try:
74
+ value = _get_single_table_value(lookup, column_name(AWARE_KEY), int(aware_id), column_name(lookup_col))
75
+ except Exception:
76
+ value = None
77
+ debugMissingLookup(_AWARE_LOOKUP, AWARE_KEY, aware_id, lookup_col, value, model=MODEL, term=TERM_ID)
78
+ return safe_parse_float(value, default=None)
79
+
80
+
81
+ def _get_factor_from_region(impact_assessment: dict, fresh_water: dict, site: dict):
82
+ region_id = get_region_id(impact_assessment, fresh_water)
83
+ lookup_col = _lookup_column(site)
84
+ value = get_region_lookup_value(_REGION_LOOKUP, region_id, lookup_col, model=MODEL, term=TERM_ID)
85
+ return safe_parse_float(value, default=None)
86
+
87
+
88
+ def run(impact_assessment: dict):
89
+ cycle = impact_assessment.get('cycle', {})
90
+ product = get_product(impact_assessment)
91
+ fresh_water = find_term_match(impact_assessment.get('emissionsResourceUse', []), 'freshwaterWithdrawalsDuringCycle')
92
+ site = get_site(impact_assessment)
93
+ aware_id = site.get(AWARE_KEY)
94
+ factor = (
95
+ _get_factor_from_basinId(site, aware_id) if aware_id else None
96
+ ) or _get_factor_from_region(impact_assessment, fresh_water, site)
97
+ inputs_value = convert_value_from_cycle(
98
+ impact_assessment, product, sum_input_impacts(cycle.get('inputs', []), TERM_ID), model=MODEL, term_id=TERM_ID
99
+ )
100
+
101
+ value = sum_values([
102
+ multiply_values([fresh_water.get('value'), factor]),
103
+ inputs_value
104
+ ])
105
+
106
+ logRequirements(impact_assessment, model=MODEL, term=TERM_ID,
107
+ fresh_water=fresh_water.get('value'),
108
+ aware_id=aware_id,
109
+ factor=factor,
110
+ inputs_value=inputs_value)
111
+
112
+ should_run = all([value is not None])
113
+ logShouldRun(impact_assessment, MODEL, TERM_ID, should_run)
114
+
115
+ return [_indicator(value)] if should_run else []
@@ -955,7 +955,7 @@
955
955
  {
956
956
  "key": "emissions",
957
957
  "model": "ecoinventV3AndEmberClimate",
958
- "value": "all",
958
+ "value": "cycle",
959
959
  "runStrategy": "always",
960
960
  "mergeStrategy": "list",
961
961
  "mergeArgs": {
@@ -966,7 +966,7 @@
966
966
  {
967
967
  "key": "emissions",
968
968
  "model": "ecoinventV3",
969
- "value": "all",
969
+ "value": "cycle",
970
970
  "runStrategy": "always",
971
971
  "mergeStrategy": "list",
972
972
  "mergeArgs": {
@@ -1469,7 +1469,9 @@
1469
1469
  "replaceThreshold": ["value", 0.01]
1470
1470
  },
1471
1471
  "stage": 2
1472
- },
1472
+ }
1473
+ ],
1474
+ [
1473
1475
  {
1474
1476
  "key": "emissions",
1475
1477
  "model": "dammgen2009",
@@ -2080,8 +2082,8 @@
2080
2082
  [
2081
2083
  {
2082
2084
  "key": "emissions",
2083
- "model": "ipcc2019",
2084
- "value": "n2OToAirInorganicFertiliserIndirect",
2085
+ "model": "pooreNemecek2018",
2086
+ "value": "noxToAirAquacultureSystems",
2085
2087
  "runStrategy": "add_blank_node_if_missing",
2086
2088
  "runArgs": {
2087
2089
  "runNonMeasured": true,
@@ -2095,8 +2097,8 @@
2095
2097
  },
2096
2098
  {
2097
2099
  "key": "emissions",
2098
- "model": "jarvisAndPain1994",
2099
- "value": "n2ToAirExcreta",
2100
+ "model": "pooreNemecek2018",
2101
+ "value": "nh3ToAirAquacultureSystems",
2100
2102
  "runStrategy": "add_blank_node_if_missing",
2101
2103
  "runArgs": {
2102
2104
  "runNonMeasured": true,
@@ -2107,24 +2109,11 @@
2107
2109
  "replaceThreshold": ["value", 0.01]
2108
2110
  },
2109
2111
  "stage": 2
2110
- }
2111
- ],
2112
- {
2113
- "key": "emissions",
2114
- "model": "emissionNotRelevant",
2115
- "value": "all",
2116
- "runStrategy": "always",
2117
- "mergeStrategy": "list",
2118
- "mergeArgs": {
2119
- "replaceLowerTier": true
2120
2112
  },
2121
- "stage": 2
2122
- },
2123
- [
2124
2113
  {
2125
2114
  "key": "emissions",
2126
2115
  "model": "pooreNemecek2018",
2127
- "value": "noxToAirAquacultureSystems",
2116
+ "value": "n2ToAirAquacultureSystems",
2128
2117
  "runStrategy": "add_blank_node_if_missing",
2129
2118
  "runArgs": {
2130
2119
  "runNonMeasured": true,
@@ -2139,7 +2128,7 @@
2139
2128
  {
2140
2129
  "key": "emissions",
2141
2130
  "model": "pooreNemecek2018",
2142
- "value": "nh3ToAirAquacultureSystems",
2131
+ "value": "n2OToAirAquacultureSystemsDirect",
2143
2132
  "runStrategy": "add_blank_node_if_missing",
2144
2133
  "runArgs": {
2145
2134
  "runNonMeasured": true,
@@ -2154,7 +2143,7 @@
2154
2143
  {
2155
2144
  "key": "emissions",
2156
2145
  "model": "pooreNemecek2018",
2157
- "value": "n2ToAirAquacultureSystems",
2146
+ "value": "ch4ToAirAquacultureSystems",
2158
2147
  "runStrategy": "add_blank_node_if_missing",
2159
2148
  "runArgs": {
2160
2149
  "runNonMeasured": true,
@@ -2168,8 +2157,25 @@
2168
2157
  },
2169
2158
  {
2170
2159
  "key": "emissions",
2171
- "model": "pooreNemecek2018",
2172
- "value": "n2OToAirAquacultureSystemsDirect",
2160
+ "model": "hestia",
2161
+ "value": "pToSurfaceWaterAquacultureSystems",
2162
+ "runStrategy": "add_blank_node_if_missing",
2163
+ "runArgs": {
2164
+ "runNonMeasured": true,
2165
+ "runNonAddedTerm": true
2166
+ },
2167
+ "mergeStrategy": "list",
2168
+ "mergeArgs": {
2169
+ "replaceThreshold": ["value", 0.01]
2170
+ },
2171
+ "stage": 2
2172
+ }
2173
+ ],
2174
+ [
2175
+ {
2176
+ "key": "emissions",
2177
+ "model": "ipcc2019",
2178
+ "value": "n2OToAirInorganicFertiliserIndirect",
2173
2179
  "runStrategy": "add_blank_node_if_missing",
2174
2180
  "runArgs": {
2175
2181
  "runNonMeasured": true,
@@ -2183,8 +2189,8 @@
2183
2189
  },
2184
2190
  {
2185
2191
  "key": "emissions",
2186
- "model": "pooreNemecek2018",
2187
- "value": "ch4ToAirAquacultureSystems",
2192
+ "model": "ipcc2019",
2193
+ "value": "n2OToAirAquacultureSystemsIndirect",
2188
2194
  "runStrategy": "add_blank_node_if_missing",
2189
2195
  "runArgs": {
2190
2196
  "runNonMeasured": true,
@@ -2198,8 +2204,83 @@
2198
2204
  },
2199
2205
  {
2200
2206
  "key": "emissions",
2201
- "model": "hestia",
2202
- "value": "pToSurfaceWaterAquacultureSystems",
2207
+ "model": "ipcc2019",
2208
+ "value": "n2OToAirCropResidueBurningIndirect",
2209
+ "runStrategy": "add_blank_node_if_missing",
2210
+ "runArgs": {
2211
+ "runNonMeasured": true,
2212
+ "runNonAddedTerm": true
2213
+ },
2214
+ "mergeStrategy": "list",
2215
+ "mergeArgs": {
2216
+ "replaceThreshold": ["value", 0.01]
2217
+ },
2218
+ "stage": 2
2219
+ },
2220
+ {
2221
+ "key": "emissions",
2222
+ "model": "ipcc2019",
2223
+ "value": "n2OToAirFuelCombustionIndirect",
2224
+ "runStrategy": "add_blank_node_if_missing",
2225
+ "runArgs": {
2226
+ "runNonMeasured": true,
2227
+ "runNonAddedTerm": true
2228
+ },
2229
+ "mergeStrategy": "list",
2230
+ "mergeArgs": {
2231
+ "replaceThreshold": ["value", 0.01]
2232
+ },
2233
+ "stage": 2
2234
+ },
2235
+ {
2236
+ "key": "emissions",
2237
+ "model": "ipcc2019",
2238
+ "value": "n2OToAirNaturalVegetationBurningIndirect",
2239
+ "runStrategy": "add_blank_node_if_missing",
2240
+ "runArgs": {
2241
+ "runNonMeasured": true,
2242
+ "runNonAddedTerm": true
2243
+ },
2244
+ "mergeStrategy": "list",
2245
+ "mergeArgs": {
2246
+ "replaceThreshold": ["value", 0.01]
2247
+ },
2248
+ "stage": 2
2249
+ },
2250
+ {
2251
+ "key": "emissions",
2252
+ "model": "ipcc2019",
2253
+ "value": "n2OToAirOrganicSoilBurningIndirect",
2254
+ "runStrategy": "add_blank_node_if_missing",
2255
+ "runArgs": {
2256
+ "runNonMeasured": true,
2257
+ "runNonAddedTerm": true
2258
+ },
2259
+ "mergeStrategy": "list",
2260
+ "mergeArgs": {
2261
+ "replaceThreshold": ["value", 0.01]
2262
+ },
2263
+ "stage": 2
2264
+ },
2265
+ {
2266
+ "key": "emissions",
2267
+ "model": "ipcc2019",
2268
+ "value": "n2OToAirOrganicSoilCultivationIndirect",
2269
+ "runStrategy": "add_blank_node_if_missing",
2270
+ "runArgs": {
2271
+ "runNonMeasured": true,
2272
+ "runNonAddedTerm": true
2273
+ },
2274
+ "mergeStrategy": "list",
2275
+ "mergeArgs": {
2276
+ "replaceThreshold": ["value", 0.01]
2277
+ },
2278
+ "stage": 2
2279
+ },
2280
+ {
2281
+ "key": "emissions",
2282
+ "model": "jarvisAndPain1994",
2283
+ "value": "n2ToAirExcreta",
2203
2284
  "runStrategy": "add_blank_node_if_missing",
2204
2285
  "runArgs": {
2205
2286
  "runNonMeasured": true,
@@ -2212,6 +2293,17 @@
2212
2293
  "stage": 2
2213
2294
  }
2214
2295
  ],
2296
+ {
2297
+ "key": "emissions",
2298
+ "model": "emissionNotRelevant",
2299
+ "value": "all",
2300
+ "runStrategy": "always",
2301
+ "mergeStrategy": "list",
2302
+ "mergeArgs": {
2303
+ "replaceLowerTier": true
2304
+ },
2305
+ "stage": 2
2306
+ },
2215
2307
  {
2216
2308
  "key": "products",
2217
2309
  "model": "transformation",