%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart TD
Start([Start literature search]) --> SPC["<u><span style='color:#1a0dab;'>spc_corpus.yaml<br/>Assemble base SPC corpus</span></u>"]
click SPC "./input/search_terms/spc_corpus.yaml" "Open spc_corpus.yaml"
SPC --> SPC_list["spc keyword set<br/>(planning & connectivity terms)<br/>(n = <<SPC_LIST>>)"
]
SPC --> NATURE_list["nature keyword set<br/>(environmental context terms)<br/>(n = <<NATURE_LIST>>)"
]
SPC_list --> BaseQuery["Level 1 query<br/>spc terms AND nature dictionary<br/>(n = <<BASE_QUERY>>)"
]
NATURE_list --> BaseQuery
BaseQuery --> ChapterSelect{Apply chapter / theme refinements}
ChapterSelect --> CH1["<u><span style='color:#1a0dab;'>Chapter 1<br/>chapter_1.yaml<br/>Governance & planning principles</span></u>"]
click CH1 "./input/search_terms/chapter_1.yaml" "Open chapter_1.yaml"
ChapterSelect --> CH2["<u><span style='color:#1a0dab;'>Chapter 2<br/>chapter_2.yaml<br/>GBF targets, nexus themes, SDGs</span></u>"]
click CH2 "./input/search_terms/chapter_2.yaml" "Open chapter_2.yaml"
ChapterSelect --> CH3["<u><span style='color:#1a0dab;'>Chapter 3<br/>chapter_3.yaml<br/>Restoration & conservation planning</span></u>"]
click CH3 "./input/search_terms/chapter_3.yaml" "Open chapter_3.yaml"
ChapterSelect --> CH4["<u><span style='color:#1a0dab;'>Chapter 4<br/>chapter_4.yaml<br/>Connectivity evidence & metrics</span></u>"]
click CH4 "./input/search_terms/chapter_4.yaml" "Open chapter_4.yaml"
ChapterSelect --> CH5["<u><span style='color:#1a0dab;'>Chapter 5<br/>chapter_5.yaml<br/>Foresight & futures (sections, themes, cross-cutting)</span></u>"]
click CH5 "./input/search_terms/Chapter_5_1_2.yaml" "Open Chapter 5 search terms"
ChapterSelect --> CH6["<u><span style='color:#1a0dab;'>Chapter 6<br/>chapter_6.yaml (+ chapter_6_r2.yaml optional)<br/>Enabling environment</span></u>"]
click CH6 "./input/search_terms/chapter_6.yaml" "Open chapter_6.yaml"
Spatial Planning and Connectivity Corpus - Technical Background Report
IPBES Spatial Planning and Connectivity Assessment
To Be added
Disclaimer
LLM Usage Disclosure
Code and charts in this project have been generated with the assistance of the codex LLM tools in Positron. All content and code is based on conceptuaisation by the authors and has been thoroughly reviewed and edited by humans afterwards.
Contributors
Assessment Experts
Data and Knowledge tsu
Working Title
IPBES_SPC_Corpus
Code repo
Introduction
The literature search for the Spatial Planning and Connectivity assessment corpus was conducted using search terms provided by the experts and refined in co-operation with the IPBES task force for data and knowledge management. The search was conducted using OpenAlex, scripted from R to use the OpenAlex API. Search terms for the following searches were defined:
- Spatial Planning and Connectivity,
- Nature / Environment
- additional search terms for specific corpora
To assess the quality of the corpus, sets of key papers were selected by the experts to verify if these are in the corpus.
The following terminology is used in this document:
- Corpus: A body of works as based on a search on OpenAlex
- Spatial Planning and Connectivity Assessment Corpus: Short: SPC corpus; The corpus resulting from the search terms TO BE ADDED
- work: terminology used for a single document in their dataset. Each work has a unique OpenAlex id, but not necessarily a DOI.
The following searches are conducted on Title and Abstract only to account for fluctuating availability of full text searches and make the search more focussed..
Schematic Overview
This is a schematic overview of the search strategy. It is shown again in the Results section with the numbers of resulting hits. ### Overview
Chapter 1
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch1["<u><span style='color:#1a0dab;'>chapter_1.yaml<br/>Level 2 refinements</span></u>"]
click Ch1 "./input/search_terms/chapter_1.yaml" "Open chapter_1.yaml"
subgraph Chapter1Sets["Chapter 1 thematic searches"]
direction TB
C1_1["Set 1:<br/>land/spatial planning<br/>+ biodiversity goals<br/>+ societal needs/values<br/>(n = <<C1_1>>)"]
C1_2["Set 2:<br/>adaptive/scenario planning<br/>+ monitoring/feedback<br/>(n = <<C1_2>>)"]
C1_3["Set 3:<br/>evidence & precaution<br/>+ ILK knowledge base<br/>(n = <<C1_3>>)"]
C1_4["Set 4:<br/>multilevel/transparent governance<br/>+ customary coherence<br/>(n = <<C1_4>>)"]
C1_5["Set 5:<br/>participatory planning<br/>+ co-design / engagement<br/>(n = <<C1_5>>)"]
C1_6["Set 6:<br/>equity / rights / tenure<br/>+ justice outcomes<br/>(n = <<C1_6>>)"]
C1_7["Set 7:<br/>connectivity (land-sea/cross-scale)<br/>+ nexus & climate links<br/>(n = <<C1_7>>)"]
end
Ch1 --> C1_1
Ch1 --> C1_2
Ch1 --> C1_3
Ch1 --> C1_4
Ch1 --> C1_5
Ch1 --> C1_6
Ch1 --> C1_7
Search Terms
Click chapter_1.yaml to download
Show the code
params$search_terms$chapter_1 |>
yaml::as.yaml() |>
cat()Set 1:
- ("land use planning" OR "spatial planning") AND
- ("biodiversity goals" OR "ecosystem services") AND
- ("societal needs" OR "value-based planning")
Set 2:
- ("adaptive planning" OR "scenario planning" OR "transformative pathways") AND
- ("monitoring" OR "feedback mechanisms")
Set 3:
- ("evidence-based planning" OR "precautionary principle") AND
- ("Indigenous knowledge" OR "local knowledge" OR "ILK")
Set 4:
- ("multi-level governance" OR "transparent governance" OR "accountable planning")
AND
- ("customary governance" OR "policy coherence")
Set 5:
- ("participatory planning" OR "community engagement") AND
- ("co-design" OR "stakeholder participation")
Set 6:
- ("equity" OR "rights-based approaches" OR "land tenure") AND
- ("indigenous rights" OR "fairness" OR "just outcomes")
Set 7:
- ("ecological connectivity" OR "land-sea connectivity" OR "cross-scale planning")
AND
- ("nexus interdependencies" OR "climate-biodiversity linkages")
Chapter 2
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch2L2["<u><span style='color:#1a0dab;'>chapter_2.yaml<br/>Level 2 GBF bundles</span></u>"]
click Ch2L2 "../search_terms/chapter_2.yaml" "Open chapter_2.yaml"
subgraph L1_GBF["GBF contexts & targets"]
direction TB
GBF_Urban["GBF-1 Urban<br/>(n = <<GBF_Urban>>)"]
GBF_Rural["GBF-1 Rural<br/>(n = <<GBF_Rural>>)"]
GBF_Fresh["GBF-1 Freshwater<br/>(n = <<GBF_Fresh>>)"]
GBF_Marine["GBF-1 Marine<br/>(n = <<GBF_Marine>>)"]
GBF_Restore["GBF-2 Ecosystem restoration<br/>(n = <<GBF_Restore>>)"]
end
Ch2L2 --> GBF_Urban
Ch2L2 --> GBF_Rural
Ch2L2 --> GBF_Fresh
Ch2L2 --> GBF_Marine
Ch2L2 --> GBF_Restore
subgraph L1_TARGET["GBF contexts & targets"]
T3["Target 3<br/>(n = <<T3>>)"]
T4["Target 4<br/>(n = <<T4>>)"]
T5["Target 5<br/>(n = <<T5>>)"]
T6["Target 6<br/>(n = <<T6>>)"]
T7["Target 7<br/>(n = <<T7>>)"]
T8["Target 8<br/>(n = <<T8>>)"]
T9["Target 9<br/>(n = <<T9>>)"]
T10["Target 10<br/>(n = <<T10>>)"]
T11["Target 11<br/>(n = <<T11>>)"]
T12["Target 12<br/>(n = <<T12>>)"]
T13["Target 13<br/>(n = <<T13>>)"]
T14["Target 14<br/>(n = <<T14>>)"]
T15["Target 15<br/>(n = <<T15>>)"]
T16["Target 16<br/>(n = <<T16>>)"]
T17["Target 17<br/>(n = <<T17>>)"]
T18["Target 18<br/>(n = <<T18>>)"]
T19["Target 19<br/>(n = <<T19>>)"]
T20["Target 20<br/>(n = <<T20>>)"]
T21["Target 21<br/>(n = <<T21>>)"]
T22["Target 22<br/>(n = <<T22>>)"]
T23["Target 23<br/>(n = <<T23>>)"]
end
Ch2L2 --> T3
Ch2L2 --> T4
Ch2L2 --> T5
Ch2L2 --> T6
Ch2L2 --> T7
Ch2L2 --> T8
Ch2L2 --> T9
Ch2L2 --> T10
Ch2L2 --> T11
Ch2L2 --> T12
Ch2L2 --> T13
Ch2L2 --> T14
Ch2L2 --> T15
Ch2L2 --> T16
Ch2L2 --> T17
Ch2L2 --> T18
Ch2L2 --> T19
Ch2L2 --> T20
Ch2L2 --> T21
Ch2L2 --> T22
Ch2L2 --> T23
subgraph L1_REL["Spatial Planning Related"]
REL["Spatial Planning Related<br/>(n = <<REL>>)"]
end
Ch2L2 --> REL
subgraph L1_NexusSets["Nexus"]
direction TB
Nexus_Water["Water<br/>(n = <<Nexus_Water>>)"]
Nexus_Food["Food<br/>(n = <<Nexus_Food>>)"]
Nexus_Health["Health<br/>(n = <<Nexus_Health>>)"]
Nexus_Climate["Climate<br/>(n = <<Nexus_Climate>>)"]
end
Ch2L2 --> Nexus_Water
Ch2L2 --> Nexus_Food
Ch2L2 --> Nexus_Health
Ch2L2 --> Nexus_Climate
L1_GBF --> Ch2L4["<u><span style='color:#1a0dab;'>chapter_2_sdg.yaml<br/>Level 4 SDG filters</span></u>"]
L1_NexusSets --> Ch2L4
L1_REL --> Ch2L4
click Ch2L4 "../search_terms/chapter_2_sdg.yaml" "Open chapter_2_sdg.yaml"
subgraph SDGSets["SDG goal filters"]
direction TB
SDG1["SDG 1"]
SDG2["SDG 2"]
SDG3["SDG 3"]
SDG4["SDG 4"]
SDG5["SDG 5"]
SDG6["SDG 6"]
SDG7["SDG 7"]
SDG8["SDG 8"]
SDG9["SDG 9"]
SDG10["SDG 10"]
SDG11["SDG 11"]
SDG12["SDG 12"]
SDG13["SDG 13"]
SDG14["SDG 14"]
SDG15["SDG 15"]
SDG16["SDG 16"]
SDG17["SDG 17"]
end
Ch2L4 --> SDG1
Ch2L4 --> SDG2
Ch2L4 --> SDG3
Ch2L4 --> SDG4
Ch2L4 --> SDG5
Ch2L4 --> SDG6
Ch2L4 --> SDG7
Ch2L4 --> SDG8
Ch2L4 --> SDG9
Ch2L4 --> SDG10
Ch2L4 --> SDG11
Ch2L4 --> SDG12
Ch2L4 --> SDG13
Ch2L4 --> SDG14
Ch2L4 --> SDG15
Ch2L4 --> SDG16
Ch2L4 --> SDG17
Search Terms
Click chapter_2.yaml to download
Show the code
params$search_terms$chapter_2 |>
yaml::as.yaml() |>
cat()GBF:
GBF-1 - Urban:
- '"urban" OR'
- '"city" OR'
- '"periurban" OR'
- '"metropolis"'
GBF-1 - Rural:
- '"rural" OR'
- '"agriculture" OR'
- '"forest" OR'
- '"mountain"'
GBF-1 - Freshwater:
- '"freshwater" OR'
- '"lake" OR'
- '"stream" OR'
- '"current" OR'
- '"river" OR'
- '"wetland" OR'
- '"watershed" OR'
- '"groundwater" OR'
- '"aquifer" OR'
- '"lagoon" OR'
- '"peatland"'
GBF-1 - Marine:
- '"sea" OR'
- '"marine" OR'
- '"ocean" OR'
- '"coast" OR'
- '"mangrove" OR'
- '"seagrass" OR'
- '"saltwater" OR'
- '"brackish water" OR'
- '"tidal flats" OR'
- '"intertidal zone" OR'
- '"subtidal"'
GBF - 2 (Ecosystem restoration):
- '"restoration" OR'
- '"degradation" OR'
- '"regeneration" OR'
- '"ecosystem rehabilitation" OR'
- '"environmental rehabilitation" OR'
- '"rewilding" OR'
- '"abandonment" OR'
- '"let nature do the job" OR'
- '"renaturalization" OR'
- '"reclamation" OR'
- '"conservation" OR'
- '"protection"'
Targets:
Target 3 (Protected areas / conservation coverage):
- '"protected areas" OR'
- '"conservation" OR'
- '"connectivity" OR'
- '"biodiversity hot spots" OR'
- '"OECMs"'
Target 4 (Species extinction & genetic diversity):
- '"extinction" OR'
- '"human-wildlife conflict" OR'
- '"genetic diversity" OR'
- '"Red List of Threated Species" OR'
- '"Red List of Ecosystems" OR'
- '"RLE"'
Target 5 (Wild species trade & use):
- '"Wildlife trade" OR'
- '"harvesting" OR'
- '"overexploitation" OR'
- '"poaching" OR'
- '"CITES"'
Target 6 (Invasive alien species):
- '"invasive species" OR'
- '"alien species" OR'
- '"IAS"'
Target 7 (Pollution):
- '"pollution" OR'
- '"nutrient runoff" OR'
- '"excess nutrients" OR'
- '"pesticide" OR'
- '"plastic" OR'
- '"PFAS" OR'
- '"forever chemicals" OR'
- '"contamination" OR'
- '"eutrophication" OR'
- '"industrial liquid waste" OR'
- '"solid waste" OR'
- '"waste" OR'
- '"saline intrusion"'
Target 8 (Climate change & resilience):
- '"climate change" OR'
- '"resilience" OR'
- '"nature-based solutions" OR'
- '"ocean acidification"'
Target 9 (Wild species management & use):
- '"wild species management" OR'
- '"sustainable use of wild species" OR'
- '"indigenous people" OR'
- '"IPLC" OR'
- '"community-based management"'
Target 10 (Sustainability in agriculture, aquaculture, forestry & fisheries):
- '"agriculture" OR'
- '"agroecology" OR'
- '"forestry" OR'
- '"fisheries aquaculture" OR'
- '"land use management" OR'
- '"water use management" OR'
- '"recreational fisheries"'
Target 11 (Nature’s contributions to people / ecosystem services):
- '"ecosystem services" OR'
- '"nature’s contributions to people" OR'
- '"NCP" OR'
- '"people’s contributions to nature"'
Target 12 (Green & blue spaces, urban planning):
- '"green space" OR'
- '"blue space" OR'
- '"urban planning" OR'
- '"green infrastructure" OR'
- '"blue infrastructure" OR'
- '"green areas"'
Target 13 (Genetic resources & benefit sharing):
- '"genetic resources" OR'
- '"benefit sharing" OR'
- '"ILK" OR'
- '"traditional knowledge" OR'
- '"Nagoya protocol"'
Target 14 (Biodiversity integration in decision-making):
- '"biodiversity policy" OR'
- '"environmental impact assessment" OR'
- '"EIA" OR'
- '"strategic environmental assessment" OR'
- '"SEA" OR'
- '"biodiversity valuation" OR'
- '"biodiversity action"'
Target 15 (Business & financial institutions disclosure & risk):
- '"company" OR'
- '"corporate responsibility" OR'
- '"business" OR'
- '"supply chain" OR'
- '"corporate biodiversity reporting" OR'
- '"social responsibility" OR'
- '"investment"'
Target 16 (Sustainable consumption):
- '"sustainable consumption" OR'
- '"waste" OR'
- '"footprint"'
Target 17 (Biosafety):
- '"biosafety" OR'
- '"biotechnology" OR'
- '"GMO" OR'
- '"genetically modified organisms"'
Target 18 (Harmful incentives / subsidies):
- '"subsidies" OR'
- '"incentives" OR'
- '"PES" OR'
- '"payments for ecosystem services"'
Target 19 (Finance mobilisation):
- '"finance mobilization" OR'
- '"funding" OR'
- '"private sector" OR'
- '"biodiversity investments"'
Target 20 (Capacity building, technology & cooperation):
- '"capacity building" OR'
- '"education" OR'
- '"technology" OR'
- '"cooperation" OR'
- '"innovation"'
Target 21 (Data, knowledge & monitoring):
- '"data governance" OR'
- '"monitoring" OR'
- '"research" OR'
- '"evaluation"'
Target 22 (Participation & inclusion):
- '"indigenous peoples" OR'
- '"ILK" OR'
- '"local communities" OR'
- '"youth" OR'
- '"participatory governance" OR'
- '"minority" OR'
- '"procedural justice" OR'
- '"non-human" OR'
- '"women" OR'
- '"girls" OR'
- '"rights" OR'
- '"defender" OR'
- '"activist" OR'
- '"guardian"'
Target 23 (Gender equality):
- '"gender" OR'
- '"women" OR'
- '"woman" OR'
- '"girls"'
Related to spatial planning process:
Set Related:
- '"planning phases" OR'
- '"planning stages" OR'
- '"planning steps" OR'
- '"planning cycle" OR'
- '"policy formulation" OR'
- '"decision-making" OR'
- '"local planning practices of indigenous people" OR'
- '"traditional practices of indigenous people" OR'
- '"planning guidelines"'
Nexus:
Water:
- '"Water" OR'
- '"Hydrological" OR'
- '"Catchment" OR'
- '"blue infrastructure"'
Food:
- '"food" OR'
- '"agriculture" OR'
- '"nutrition" OR'
- '"malnutrition" OR'
- '"hunger" OR'
- '"farm"'
Health:
- '"health" OR'
- '"healthy" OR'
- '"mortality" OR'
- '"diseases" OR'
- '"pandemics" OR'
- '"well-being" OR'
- '"wellbeing"'
Climate:
- '"Climate" OR'
- '"energy" OR'
- '"emission" OR'
- '"GHG" OR'
- '"greenhouse gas" OR'
- '"flood" OR'
- '"drought"'
Non implemented additional searches are:
- Click chapter_2_add.yaml to download
- Click chapter_2_sdg.yaml to download
Chapter 3
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch3["<u><span style='color:#1a0dab;'>chapter_3.yaml<br/>Level 2 refinements</span></u>"]
click Ch3 "./input/search_terms/chapter_3.yaml" "Open chapter_3.yaml"
subgraph Chapter3Sets["Chapter 3 searches"]
direction TB
C3_1["Set 1:<br/>Protected/OECM + NBSAP + cases<br/>+ spatial prioritization + regional scales<br/>(n = <<C3_1>>)"]
C3_2["Set 2:<br/>Restoration types + inclusivity & ILK<br/>(n = <<C3_2>>)"]
C3_3["Set 3:<br/>Restoration planning + connectivity + resilience<br/>(n = <<C3_3>>)"]
C3_4["Set 4:<br/>Systematic conservation planning / gap analysis<br/>(n = <<C3_4>>)"]
C3_5["Set 5:<br/>Protected area & connectivity planning<br/>(n = <<C3_5>>)"]
C3_6["Set 6:<br/>Landscape/species/corridor networks<br/>(n = <<C3_6>>)"]
C3_7["Set 7:<br/>Conservation planning + ecosystem services<br/>(n = <<C3_7>>)"]
C3_8["Set 8:<br/>Participatory conservation mapping<br/>(n = <<C3_8>>)"]
C3_9["Set 9:<br/>Conservation effectiveness + spatial planning<br/>(n = <<C3_9>>)"]
C3_10["Set 10:<br/>Adaptive management under global change drivers<br/>(n = <<C3_10>>)"]
end
Ch3 --> C3_1
Ch3 --> C3_2
Ch3 --> C3_3
Ch3 --> C3_4
Ch3 --> C3_5
Ch3 --> C3_6
Ch3 --> C3_7
Ch3 --> C3_8
Ch3 --> C3_9
Ch3 --> C3_10
Search Terms
Click chapter_3.yaml to download
Show the code
params$search_terms$chapter_3 |>
yaml::as.yaml() |>
cat()Set 1:
- (((protected OR conserved) AND areas) OR "other effective area-based conservation
measures" OR "indigenous and traditional territories") AND
- ((national AND ("Biodiversity Strategy" OR target)) OR "downscaling") AND
- ("case study" OR "best practice" OR "planning" OR "spatial prioritization") AND
- ("regional" OR "national" OR "subnational" OR "mountain" OR "marine" OR (Indigenous
AND ("land" OR "protected areas")) OR transboundary)
Set 2:
- '"restoration" AND'
- ("inclusivity" OR "participation" OR "co-management" OR "Indigenous knowledge" OR
"traditional ecological knowledge" OR "ILK" OR "local knowledge" OR "community-based
restoration" OR "stakeholder engagement" OR "social equity" OR "justice" OR "gender
inclusion")
Set 3:
- ("restoration planning" OR "ecological restoration") AND
- ("ecosystem integrity" OR "ecological connectivity" OR "corridors" OR "migration
pathways" OR "climate resilience" OR "participatory approaches")
Set 4: ("spatial conservation planning" OR "landscape conservation planning" OR "conservation
gap analysis" OR "systematic conservation planning" OR "ecoregion conservation"
OR "transboundary conservation planning")
Set 5: ("protected area planning" OR "protected area connectivity planning" OR "conservation
priority areas" OR "marine protected area planning")
Set 6: ("landscape connectivity and conservation" OR "species connectivity" OR "planning
conservation network" OR "ecological connectivity planning" OR "conservation corridor
planning" OR "network conservation planning" OR "marine conservation planning" OR
"seascape conservation planning" OR "wetland conservation planning")
Set 7: ("conservation planning" AND "ecosystem services")
Set 8: ("participatory conservation mapping" OR "community conservation mapping" OR
"participatory spatial planning")
Set 9:
- ("conservation effectiveness" OR "protected area management effectiveness") AND
- '"spatial planning"'
Set 10:
- '"adaptive management" AND'
- ("global change" OR "climate change" OR "land use change" OR "sea use change" OR
"invasive species" OR "overexploitation" OR "pollution") AND
- '"spatial planning"'
Chapter 4
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch4["<u><span style='color:#1a0dab;'>chapter_4.yaml<br/>Level 2 refinements</span></u>"]
click Ch4 "./input/search_terms/chapter_4.yaml" "Open chapter_4.yaml"
subgraph Chapter4Sets["Chapter 4 searches"]
direction TB
C4_1["Set 1:<br/>Connectivity review articles<br/>(n = <<C4_1>>)"]
C4_2["Set 2:<br/>Connectivity benefits vs risks<br/>+ ecosystem services<br/>(n = <<C4_2>>)"]
C4_3["Set 3:<br/>Structural vs functional connectivity<br/>(n = <<C4_3>>)"]
C4_4["Set 4:<br/>Connectivity modelling toolkits<br/>(n = <<C4_4>>)"]
C4_5["Set 5:<br/>Connectivity indicators & metrics<br/>(n = <<C4_5>>)"]
C4_6["Set 6:<br/>Policy & governance integration<br/>(n = <<C4_6>>)"]
C4_7["Set 7:<br/>Multilevel / transboundary governance<br/>+ IPLC inclusion + land tenure<br/>(n = <<C4_7>>)"]
C4_8["Set 8:<br/>Movement ecology<br/>(dispersal / migration / permeability)<br/>(n = <<C4_8>>)"]
end
Ch4 --> C4_1
Ch4 --> C4_2
Ch4 --> C4_3
Ch4 --> C4_4
Ch4 --> C4_5
Ch4 --> C4_6
Ch4 --> C4_7
Ch4 --> C4_8
Search Terms
Click chapter_4.yaml to download
Show the code
params$search_terms$chapter_4 |>
yaml::as.yaml() |>
cat()Set 1: '"ecological connectivity"'
Set 2: ("ecological connectivity" OR "habitat connectivity" OR "landscape connectivity"
OR "wildlife corridor" OR "biological corridor") AND ("benefits" OR "advantages"
OR "positive" OR "impacts" OR "opportunities") AND ("risks" OR "drawbacks" OR "negative"
OR "impacts" OR "challenges") AND ("ecosystem services" OR "ecosystem management")
Set 3:
- '"structural connectivity" OR'
- '"functional connectivity"'
Set 4:
- '"connectivity analysis" OR'
- '"network analysis" OR'
- '"circuit theory" OR'
- '"least-cost path" OR'
- '"graph theory" OR'
- '"resistant kernels" OR'
- '"agent-based models" OR'
- '"Conefor" OR'
- '"pattern-oriented model" OR'
- '"state-space model" OR'
- '"corridor model" OR'
- '"simulated individual" OR'
- '"movement paths" OR'
- '"hidden Markov models" OR'
- '"effective connectivity" OR'
- '"gene flow"'
Set 5: '"ecological connectivity" AND ("indicator" OR "index" OR "metric*" OR "objective")'
Set 6:
- ("ecological connectivity" OR "landscape connectivity" OR "functional connectivity"
OR "connectivity conservation") AND
- ("policy" OR "framework" OR "governance" OR "planning instrument" OR "initiative"
OR "agreement" OR "global" OR "international" OR "regional strategy" OR "transboundary
cooperation" OR "joint management" OR "cross-border conservation" OR "bioregional
planning")
Set 7:
- ("ecological connectivity" OR "spatial governance") AND
- ("multi-level governance" OR "cross-scale governance" OR "transboundary governance")
AND
- ("inclusive governance" OR "community-based management" OR "co-management") AND
- ("Indigenous Peoples" OR "Local Communities" OR "IPLCs") AND
- ("policy coherence" OR "cross-sectoral integration") AND
- ("land tenure" OR "property rights" OR "private land conservation")
Set 8:
- '"dispersal" OR'
- '"migration" OR'
- '"nomadism" OR'
- '"landscape permeability"'
Chapter 5
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch5L2["<u><span style='color:#1a0dab;'>chapter_5.yaml<br/>Level 2 foresight framing</span></u>"]
click Ch5L2 "./input/search_terms/chapter_5.yaml" "Open chapter_5.yaml"
subgraph L2Sets["Section 5.1–5.2 searches"]
direction TB
C5_1["Set 1:<br/>Future + project*/predict*/scenario<br/>(n = <<C5_1>>)"]
C5_2["Set 2:<br/>Future + pathway*/narrative*/vision*<br/>(n = <<C5_2>>)"]
C5_3["Set 3:<br/>Future-proof*/anticipat*/scenario planning<br/>(n = <<C5_3>>)"]
C5_4["Set 4:<br/>Foresight*/backcasting/simulat*/trend*<br/>(n = <<C5_4>>)"]
C5_5["Set 5:<br/>Model* AND scenario<br/>(n = <<C5_5>>)"]
end
Ch5L2 --> C5_1
Ch5L2 --> C5_2
Ch5L2 --> C5_3
Ch5L2 --> C5_4
Ch5L2 --> C5_5
subgraph L3Sets["Section 5.3 searches"]
direction TB
C5_3a["Set 1:<br/>Drivers of change<br/>(n = <<C5_3a>>)"]
C5_3b["Set 2:<br/>Driver modelling approaches<br/>(n = <<C5_3b>>)"]
C5_3c["Set 3:<br/>Driver gaps<br/>(n = <<C5_3c>>)"]
end
Ch5L2 --> C5_3a
Ch5L2 --> C5_3b
Ch5L2 --> C5_3c
subgraph L4Sets["Section 5.4 searches"]
direction TB
C5_4a["Set 1:<br/>Interactions (synergy/trade-off/nexus)<br/>(n = <<C5_4a>>)"]
C5_4b["Set 2:<br/>Response options (integrated planning / NbS)<br/>(n = <<C5_4b>>)"]
C5_4c["Set 3:<br/>Cross-scale synergy & trade-off terms<br/>(n = <<C5_4c>>)"]
end
Ch5L2 --> C5_4a
Ch5L2 --> C5_4b
Ch5L2 --> C5_4c
subgraph L5Sets["Section 5.5 searches"]
direction TB
C5_5a["Set 1:<br/>Adaptive / transformative management<br/>(n = <<C5_5a>>)"]
C5_5b["Set 2:<br/>Uncertainty quantification<br/>(n = <<C5_5b>>)"]
C5_5c["Set 3:<br/>Tipping points & thresholds<br/>(n = <<C5_5c>>)"]
C5_5d["Set 4:<br/>Cascading risks & precaution<br/>(n = <<C5_5d>>)"]
end
Ch5L2 --> C5_5a
Ch5L2 --> C5_5b
Ch5L2 --> C5_5c
Ch5L2 --> C5_5d
subgraph L6Sets["Section 5.6 searches"]
direction TB
C5_6a["Set 1:<br/>Science-policy-practice pathways<br/>(n = <<C5_6a>>)"]
C5_6b["Set 2:<br/>ILK integration & community planning<br/>(n = <<C5_6b>>)"]
C5_6c["Set 3:<br/>Enabling factors & coordination<br/>(n = <<C5_6c>>)"]
C5_6d["Set 4:<br/>Shocks, surprises, uncertainties<br/>(n = <<C5_6d>>)"]
end
Ch5L2 --> C5_6a
Ch5L2 --> C5_6b
Ch5L2 --> C5_6c
Ch5L2 --> C5_6d
subgraph CCSets["Cross-cutting searches"]
direction TB
CC1["Set 1:<br/>Scales & telecoupling<br/>(n = <<CC1>>)"]
CC2["Set 2:<br/>Co-production & inclusion<br/>(n = <<CC2>>)"]
end
Ch5L2 --> CC1
Ch5L2 --> CC2
Search Terms
Click chapter_5.yaml to download
Show the code
params$search_terms$chapter_5 |>
yaml::as.yaml() |>
cat()Sections 1 and 2:
Set 1: Future AND (projection OR projected OR predicted OR prediction OR forecast
OR scenario)
Set 2: Future AND (pathway OR narrative OR storyline OR foresight OR vision OR horizon
scan OR trajectory OR imagination)
Set 3:
- '"future-proof" OR'
- anticipate OR
- '"forward-looking" OR'
- '"futures thinking" OR'
- '"future-oriented" OR'
- '"prospective" OR'
- '"plausible future" OR'
- '"scenario planning"'
Set 4:
- Foresight OR
- backcasting OR
- simulate OR
- simulation OR
- '"delphi method" OR'
- storytelling OR
- '"environmental scan" OR'
- trend OR
- megatrend
Set 5: (model AND scenario)
Section 3:
Set 1:
- '"drivers of change" OR'
- '"biodiversity driver" OR'
- '"social-ecological driver" OR'
- '"technological driver" OR'
- '"perennial driver" OR'
- '"emerging driver" OR'
- '"cascading driver"'
Set 2:
- '"Integrated assessment" OR'
- '"land-use change model" OR'
- '"Scenario model" OR'
- '"Social-ecological model" OR'
- '"agent-based model" OR'
- '"telecoupled systems model" OR'
- '"hybrid model" OR'
- '"participatory model" OR'
- '"data-driven foresight model"'
Set 3:
- '"value-based driver" OR'
- '"compound driver" OR'
- '"interacting driver" OR'
- '"distant driver"'
Section 4:
Set 1:
- Synergy OR
- tradeoff OR
- '"trade-off" OR'
- nexus OR
- '"win-win" OR'
- '"cross-sectoral interaction" OR'
- '"co-benefit"'
Set 2:
- '"Integrated planning" OR'
- '"multifunctional" OR'
- '"nature-based solution" OR'
- '"adaptive governance" OR'
- '"cross-sectoral governance"'
Set 3:
- (Spatial OR temporal OR thematic OR "cross-scale") AND
- (Synergy OR tradeoff OR "trade-off" OR nexus OR "win-win")
Section 5:
Set 1:
- '"Adaptative management" OR'
- '"Adaptative governance" OR'
- '"Transformative adaptation" OR'
- '"Adaptive systems" OR'
- '"Adaptive foresight"'
Set 2:
- (Model OR data OR "decision-making under" OR planning OR scenario OR epistemic
OR ontological) AND
- uncertainty
Set 3:
- '"Tipping points" OR'
- thresholds OR
- '"Planetary boundaries" OR'
- '"Nonlinear system dynamics" OR'
- Surprise
Set 4:
- '"Cascading risk" OR'
- '"Risk management" OR'
- '"Environmental shocks" OR'
- '"Environmental risks" OR'
- '"Precautionary approach"'
Section 6:
Set 1:
- '"Science-policy-practice" OR'
- '"transformative pathways" OR'
- '"transdisciplinary co-production"'
Set 2:
- '"Knowledge co-production" OR'
- '"community-based spatial planning" OR'
- '"indigenous mapping" OR'
- '"traditional knowledge" OR'
- '"participatory scenario planning"'
Set 3:
- '"Multi-level governance" OR'
- '"institutional capacity" OR'
- '"cross-sectoral coordination"'
Set 4:
- '"Planning for uncertainty" OR'
- '"adaptive planning" OR'
- '"resilience planning" OR'
- '"anticipatory governance"'
Cross-cutting sets:
Set 1: ("Spatial scaling" OR "Temporal scaling" OR "Social scale" OR "Nested governance"
OR "Multi-scale planning" OR "Cross-scale interaction" OR Telecoupling OR Teleconnection
OR Metacoupling OR Spillover)
Set 2:
- ((Indigenous OR local OR ecological OR "co-production of") AND knowledge) OR
- '"pluralism" OR'
- epistemic OR
- '"Community-based" OR'
- Biocultural OR
- '"Customary" OR'
- '"tenure" OR'
- '"Participatory" OR'
- '"Cross-cultural" OR'
- '"knowledge integration" OR'
- ((Gender OR Social) AND Inclusion) OR
- '"Gender-responsive" OR'
- '"Intersectionality" OR'
- equity OR
- '"Women’s roles" OR'
- '"Women''s roles" OR'
- '"Women`s roles" OR'
- '"Gendered" OR'
- '"Empowerment" OR'
- '"capacity-building"'
Chapter 6
%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch6["<u><span style='color:#1a0dab;'>chapter_6.yaml<br/>Level 2 refinements</span></u>"]
click Ch6 "./input/search_terms/chapter_6.yaml" "Open chapter_6.yaml"
subgraph Chapter6Sets["Chapter 6 searches"]
direction TB
C6_1["Set 1:<br/>Institutional & governance structures<br/>(n = <<C6_1>>)"]
C6_2["Set 2:<br/>Political & strategic leadership<br/>(n = <<C6_2>>)"]
C6_3["Set 3:<br/>Socio-cultural & stakeholder engagement<br/>(n = <<C6_3>>)"]
C6_4["Set 4:<br/>Collaboration, trust & networks<br/>(n = <<C6_4>>)"]
C6_5["Set 5:<br/>Financial & economic mechanisms<br/>(n = <<C6_5>>)"]
C6_6["Set 6:<br/>Legal & policy frameworks<br/>(n = <<C6_6>>)"]
C6_7["Set 7:<br/>Human & institutional capacity<br/>(n = <<C6_7>>)"]
C6_8["Set 8:<br/>Data, knowledge & decision support<br/>(n = <<C6_8>>)"]
C6_9["Set 9:<br/>Ecological & spatial planning tools<br/>(n = <<C6_9>>)"]
C6_10["Set 10:<br/>Cross-cutting process enablers<br/>(n = <<C6_10>>)"]
end
Ch6 --> C6_1
Ch6 --> C6_2
Ch6 --> C6_3
Ch6 --> C6_4
Ch6 --> C6_5
Ch6 --> C6_6
Ch6 --> C6_7
Ch6 --> C6_8
Ch6 --> C6_9
Ch6 --> C6_10
Ch6R2["<u><span style='color:#1a0dab;'>chapter_6_r2.yaml<br/>Optional Level 3 filter</span></u>"]
Chapter6Sets --> Ch6R2
click Ch6R2 "./input/search_terms/chapter_6_r2.yaml" "Open chapter_6_r2.yaml"
subgraph Chapter6Case["Chapter 6 searches"]
R2["Case-study keywords<br/>(case stud*, example*, initiative*, etc.)"]
end
Ch6R2 --> R2
Search Terms
Click chapter_6.yaml to download
Show the code
params$search_terms$chapter_6 |>
yaml::as.yaml() |>
cat()Set 1:
- '"institutional arrangements" OR'
- '"governance structures" OR'
- '"cross-sector coordination" OR'
- '"multi-level governance" OR'
- '"inter-agency collaboration" OR'
- '"policy coherence" OR'
- '"environmental governance" OR'
- '"landscape governance" OR'
- '"seascape governance" OR'
- '"integrated landscape management"'
Set 2:
- '"political support" OR'
- '"environmental leadership" OR'
- '"ministerial alignment" OR'
- '"strategic prioritization" OR'
- '"national biodiversity strategy"'
Set 3:
- '"stakeholder engagement" OR'
- participation OR
- '"co-design" OR'
- '"co-production" OR'
- '"community-based management" OR'
- '"indigenous governance" OR'
- '"traditional knowledge" OR'
- '"Free Prior and Informed Consent" OR'
- FPIC OR
- '"stakeholder workshops" OR'
- '"stakeholder dialogues" OR'
- '"public consultation"'
Set 4:
- collaboration OR
- trust OR
- partnership OR
- '"multi-stakeholder platform" OR'
- coalition OR
- '"inter-organizational network" OR'
- cooperation
Set 5:
- '"biodiversity finance" OR'
- '"blended finance" OR'
- '"green finance" OR'
- '"conservation trust funds" OR'
- '"Payment of ecosystem services" OR'
- '"natural capital accounting" OR'
- '"biodiversity offsets"'
Set 6:
- '"environmental law" OR'
- legislation OR
- '"statutory framework" OR'
- '"policy instruments" OR'
- '"regulatory mechanisms" OR'
- '"strategic environmental assessment" OR'
- '"Environmental Impact Assessment"'
Set 7:
- '"institutional capacity" OR'
- '"technical expertise" OR'
- '"capacity building" OR'
- training OR
- '"professional development" OR'
- '"institutional strengthening" OR'
- '"workforce development" OR'
- education OR
- pipeline OR
- '"diversity and inclusion" OR'
- '"gender inequality" OR'
- '"girl’s education" OR'
- '"girl''s education" OR'
- '"girl`s education" OR'
- '"Indigenous knowledge" OR'
- '"generational knowledge" OR'
- '"institutional memory"'
Set 8.1:
- '"species distribution maps" OR'
- (("land cover" OR "protected area") AND data) OR
- '"Indigenous knowledge" OR'
- '"knowledge co-production" OR'
- '"knowledge and data management" OR'
- '"spatial data infrastructure" OR'
- ((CARE OR FAIR) AND principles) OR
- '"open science" OR'
- '"information delivery" OR'
- (data AND (standards OR stewardship OR "management plan" OR "sharing agreement"
OR archive OR repository OR structure)) OR
- metadata OR
- (quality AND (assurance OR control))
Set 8.2:
- '"monitoring and evaluation" OR'
- '"decision-support tools" OR'
- '"ecological model" OR'
- '"scenario planning and analysis" OR'
- ("systematic conservation planning" AND ("and model" OR tools)) OR
- '"biodiversity targets" OR'
- '"science communication" OR'
- '"science-practice gap" OR'
- '"participatory mapping and model" OR'
- '"scenario narratives" OR'
- '"evidence bridge" OR'
- '"boundary spanner and organization" OR'
- '"early adopter"'
Set 9:
- '"spatial planning" OR'
- '"landscape governance" OR'
- '"territorial integration" OR'
- '"land-use planning" OR'
- '"ecological connectivity" OR'
- '"ecological networks" OR'
- '"ecological corridors" OR'
- '"green infrastructure" OR'
- '"nature-based Strategic spatial planning solutions" OR'
- '"restoration planning" OR'
- '"blue infrastructure" OR'
- '"blue-green infrastructure" OR'
- '"spatial decision-making" OR'
- '"strategic spatial planning"'
Set 10:
- '"adaptive management" OR'
- '"feedback mechanisms" OR'
- '"monitoring and learning" OR'
- '"institutional innovation" OR'
- '"continuous improvement"'
Non implemented additional searches are:
- Click chapter_6_r2.yaml to download
Type Selsection
OpenAlex contains more then 270 million works of different types. The following table shows and explains the available types and highlights which are selected to be included in the SPC Corpus.
Show the code
params$types |>
knitr::kable(
caption = "OpenAlex Work Types and Inclusion in the SPC Corpus",
booktabs = TRUE,
align = c("l", "l", "l", "c")
) # |>| Type | Description | Included |
|---|---|---|
| article | Scholarly journal articles and related periodical works | TRUE |
| book | Monographs and other long-form published books | TRUE |
| book-chapter | Chapters published within edited books or proceedings | TRUE |
| dissertation | Doctoral or master level theses and dissertations | TRUE |
| editorial | Editorials and editor introductions | TRUE |
| preprint | Pre-publication manuscripts shared prior to peer review | TRUE |
| report | Technical, institutional, or policy reports | TRUE |
| review | Narrative or systematic review articles | TRUE |
| dataset | Published datasets and structured data releases | FALSE |
| erratum | Published corrections to previously released works | FALSE |
| grant | Summaries or descriptions of grant-funded projects | FALSE |
| letter | Correspondence, commentaries, and short letters | FALSE |
| libguides | Library research guides and curated bibliographies | FALSE |
| other | Works that do not align with a more specific OpenAlex type | FALSE |
| paratext | Prefaces, introductions, indexes, and other paratextual items | FALSE |
| peer-review | Formal peer review reports and evaluations | FALSE |
| reference-entry | Encyclopaedia or dictionary reference entries | FALSE |
| retraction | Notices retracting previously published works | FALSE |
| standard | Standards, protocols, and technical specifications | FALSE |
| supplementary-materials | Supplementary files accompanying primary publications | FALSE |
Show the code
# kableExtra::kable_styling(
# full_width = FALSE,
# position = "left"
# )Methods
SPC Corpus
Assess of Individual Terms in spc and nature search terms
This assessment is done on the whole of the OpenAlex corpus and only filtered for types and not for the date range.
Show the code
fn <- file.path(params$output_dir, "searchterm_assessment_spcc.rds")
if (!file.exists(fn)) {
result <- list(
spc = assess_search_term_both(
st = params$search_terms$spc_corpus$spc,
and_term = stcompact(params$search_terms$spc_corpus$spc_corpus$nature),
types = params$types_filter,
verbose = TRUE
),
nature = assess_search_term_both(
st = params$search_terms$spc_corpus$nature,
and_term = stcompact(params$search_terms$spc_corpus$spc_corpus$spc),
types = params$types_filter,
verbose = FALSE
)
) |>
saveRDS(fn)
}Get Key Paper
Here we get key papers in a parquet database which is partitioned by:
found_in: the search term or openalex which is used as the filter, i.e. the key paper occurs in corpus which would result from the search termid_used: the id used to testing,m either the OpenAlex id (id) or the doi (doi)page: only for processing reasons
No filtering, neither by type nor by publication year is done.
The other columns are as returned by the OpenAlex API.
Show the code
#|
st <- list(
spc = params$search_terms$spc_corpus$spc |>
paste0(collapse = " "),
nature = params$search_terms$spc_corpus$nature |>
paste0(collapse = " ")
)
st$spcc <- paste0("(", st$spc, ") AND (", st$nature, ")")
dois <- params$key_papers$goldstandard$DOI[
params$key_papers$goldstandard$DOI != ""
]
ids <- params$key_papers$goldstandard$openalex_id[
params$key_papers$goldstandard$openalex_id != ""
]Show the code
#|
fn <- file.path(params$keyworks, "parquet", "found_in=openalex")
if (!dir.exists(fn)) {
### KP in OpenAlex
openalexPro::pro_query(
doi = dois,
chunk_limit = 50
) |>
openalexPro::pro_request(
output = file.path(fn, "..", "json_doi")
) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "..", "jsonl_doi"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=doi"),
delete_input = TRUE
)
openalexPro::pro_query(
id = ids,
multiple_id = TRUE,
chunk_limit = 50
) |>
openalexPro::pro_request(
output = file.path(fn, "..", "json_oa_id")
) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "..", "jsonl_oa_id"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=oa_id"),
delete_input = TRUE
)
}Show the code
#|
fn <- file.path(params$keyworks, "parquet", "found_in=spc")
if (!dir.exists(fn)) {
openalexPro::pro_query(
title_and_abstract.search = st$spc,
doi = dois,
chunk_limit = 25
) |>
openalexPro::pro_request(
output = file.path(fn, "..", "json_doi")
) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "..", "jsonl_doi"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=doi"),
delete_input = TRUE
)
openalexPro::pro_query(
title_and_abstract.search = st$spc,
id = ids,
multiple_id = TRUE,
chunk_limit = 25
) |>
openalexPro::pro_request(output = file.path(fn, "json_oa_id")) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "jsonl_oa_id"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=oa_id"),
delete_input = TRUE
)
}Show the code
#|
fn <- file.path(params$keyworks, "parquet", "found_in=nature")
if (!dir.exists(fn)) {
### KP in nature
openalexPro::pro_query(
title_and_abstract.search = st$nature,
doi = dois,
chunk_limit = 25
) |>
openalexPro::pro_request(output = file.path(fn, "json_doi")) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "jsonl_doi"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=doi"),
delete_input = TRUE
)
openalexPro::pro_query(
title_and_abstract.search = st$nature,
id = ids,
multiple_id = TRUE,
chunk_limit = 25
) |>
openalexPro::pro_request(output = file.path(fn, "json_oa_id")) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "jsonl_oa_id"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=oa_id"),
delete_input = TRUE
)
}Show the code
#|
fn <- file.path(params$keyworks, "parquet", "found_in=spcc")
if (!dir.exists(fn)) {
### KP in spcc
openalexPro::pro_query(
title_and_abstract.search = st$spcc,
doi = params$key_papers$goldstandard$DOI[
params$key_papers$goldstandard$DOI != ""
],
chunk_limit = 15
) |>
openalexPro::pro_request(output = file.path(fn, "json_doi")) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "jsonl_doi"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=doi"),
delete_input = TRUE
)
openalexPro::pro_query(
title_and_abstract.search = st$spcc,
id = params$key_papers$goldstandard$openalex_id[
params$key_papers$goldstandard$openalex_id != ""
],
multiple_id = TRUE,
chunk_limit = 25
) |>
openalexPro::pro_request(output = file.path(fn, "json_oa_id")) |>
openalexPro::pro_request_jsonl(
output = file.path(fn, "jsonl_oa_id"),
delete_input = TRUE
) |>
openalexPro::pro_request_jsonl_parquet(
output = file.path(fn, "id_used=oa_id"),
delete_input = TRUE
)
}Keypaper in Search Terms
The in the previous step retrieved works are analysed here to get a table which shows where the key paper occur.
Show the code
fn <- file.path(params$keyworks, "kp_found_in.rds")
if (!file.exists(fn)) {
arrow::open_dataset(file.path(params$keyworks, "parquet")) |>
dplyr::select(
id,
doi,
type,
found_in,
title,
citation
) |>
dplyr::group_by(id, doi, title, citation, type) |>
dplyr::summarise(
in_openalex = base::max(found_in == "openalex", na.rm = TRUE),
in_spc = base::max(found_in == "spc", na.rm = TRUE),
in_nature = base::max(found_in == "nature", na.rm = TRUE),
in_spcc = base::max(found_in == "spcc", na.rm = TRUE),
.groups = "drop"
) |>
dplyr::collect() |>
saveRDS(fn)
}Get Numbers from OpenAlex of the Search Terms
These data is gathered from OpenAlex directly, not downloaded any works. The data is used to assess the quality of the TCA Corpus.
The query contains: - the search term (nature, spc, spcc) - the types selected (article, book, book-chapter, dissertation, editorial, preprint, report, review) - the date range (from 1992-01-01 to 2025-12-31)
The following counts are retrieved:
Overall hits
Show the code
#|
fn <- file.path(params$corpus, "st_hits.rds")
if (!file.exists(fn)) {
st <- list(
spc = params$search_terms$spc_corpus$spc |>
paste0(collapse = " "),
nature = params$search_terms$spc_corpus$nature |>
paste0(collapse = " ")
)
st$spcc <- paste0("(", st$spc, ") AND (", st$nature, ")")
queries <- lapply(
st,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = s,
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
queries$openalex <- openalexPro::pro_query(
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to,
)
pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist()
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count) |>
saveRDS(file = fn)
}Counts per Language
Show the code
#|
fn <- file.path(params$corpus, "st_languages.rds")
if (!file.exists(fn)) {
st <- list(
spc = params$search_terms$spc_corpus$spc |>
paste0(collapse = " "),
nature = params$search_terms$spc_corpus$nature |>
paste0(collapse = " ")
)
st$spcc <- paste0("(", st$spc, ") AND (", st$nature, ")")
queries <- lapply(
st,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = s,
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to,
group_by = "language"
)
}
)
queries$openalex <- openalexPro::pro_query(
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to,
group_by = "language"
)
pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
verbose = TRUE
) |>
dplyr::bind_rows()
}
) |>
dplyr::bind_rows(.id = "source") |>
dplyr::select(source, language = key_display_name, count) |>
tidyr::pivot_wider(
names_from = source,
values_from = count,
names_prefix = "count_",
values_fn = list(count = sum),
values_fill = list(count = 0)
) |>
dplyr::select(
language,
count_openalex,
count_spc,
count_nature,
count_spcc
) |>
dplyr::arrange(desc(count_openalex)) |>
saveRDS(file = fn)
}Counts per Publication Year
Show the code
fn <- file.path(params$corpus, "st_years.rds")
if (!file.exists(fn)) {
st <- list(
spc = params$search_terms$spc_corpus$spc |>
paste0(collapse = " "),
nature = params$search_terms$spc_corpus$nature |>
paste0(collapse = " ")
)
st$spcc <- paste0("(", st$spc, ") AND (", st$nature, ")")
queries <- lapply(
st,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = s,
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to,
group_by = "publication_year"
)
}
)
queries$openalex <- openalexPro::pro_query(
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to,
group_by = "publication_year"
)
result <- pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
verbose = TRUE
) |>
dplyr::bind_rows()
}
) |>
dplyr::bind_rows(.id = "source") |>
dplyr::select(source, year = key, count) |>
dplyr::mutate(year = base::as.integer(year)) |>
tidyr::pivot_wider(
names_from = source,
values_from = count,
names_prefix = "count_",
values_fn = list(count = sum),
values_fill = list(count = 0)
) |>
dplyr::select(
year,
count_openalex,
count_spc,
count_nature,
count_spcc
) |>
dplyr::arrange(dplyr::desc(year)) |>
saveRDS(file = fn)
}Chapter 1
Show the code
# params$search_terms$chapter_1
fn <- file.path(params$chapter_1, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
)
queries <- lapply(
params$search_terms$chapter_1,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
result <- pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist()
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count)
rownames(result) <- names(queries)
saveRDS(result, file = fn)
}Chapter 2
Show the code
fn <- file.path(params$chapter_2, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
) |>
stcompact()
queries <- lapply(
params$search_terms$chapter_2,
function(section) {
lapply(
section,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
}
)
result <- lapply(
names(queries),
function(sect_nm) {
result <- lapply(
names(queries[[sect_nm]]),
function(nm) {
message("Retrieving ", sect_nm, " - ", nm, " ...")
result <- c(
count = NA_integer_,
db_response_time_ms = NA_integer_,
page = NA_integer_,
per_page = NA_integer_
)
try(
result <- queries[[sect_nm]][nm] |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist(),
silent = FALSE
)
return(result)
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count)
browser()
rownames(result) <- names(queries[[sect_nm]])
return(result)
}
)
names(result) <- names(queries)
saveRDS(result, file = fn)
}Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Show the code
# fn <- file.path(params$chapter_2, "st_hits.rds")
# if (!file.exists(fn)) {
# spcc <- paste0(
# "(",
# stcompact(params$search_terms$spc_corpus$spc),
# ") AND (",
# stcompact(params$search_terms$spc_corpus$nature),
# ")"
# )
# queries <- lapply(
# params$search_terms$chapter_2,
# function(s) {
# openalexPro::pro_query(
# title_and_abstract.search = paste0(
# "(",
# spcc,
# ") AND (",
# stcompact(s),
# ")"
# ),
# type = params$types_filter,
# from_publication_date = params$publication_date$from,
# to_publication_date = params$publication_date$to
# )
# }
# )
# result <- pbapply::pblapply(
# queries,
# function(query) {
# query |>
# openalexR::oa_request(
# count_only = TRUE,
# verbose = TRUE
# ) |>
# unlist()
# }
# ) |>
# do.call(what = cbind) |>
# t() |>
# as.data.frame() |>
# dplyr::select(count)
# rownames(result) <- names(queries)
# saveRDS(result, file = fn)
# }Chapter 3
Show the code
fn <- file.path(params$chapter_3, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
)
queries <- lapply(
params$search_terms$chapter_3,
function(s) {
result <- c(
count = NA_integer_,
db_response_time_ms = NA_integer_,
page = NA_integer_,
per_page = NA_integer_
)
try(
result <- openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
),
silent = FALSE
)
}
)
result <- pbapply::pblapply(
queries,
function(query) {
result <- c(
count = NA_integer_,
db_response_time_ms = NA_integer_,
page = NA_integer_,
per_page = NA_integer_
)
try(
result <- query |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist()
)
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count)
rownames(result) <- names(queries)
saveRDS(result, file = fn)
}Chapter 4
Show the code
fn <- file.path(params$chapter_4, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
)
queries <- lapply(
params$search_terms$chapter_4,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
result <- pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist()
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count)
rownames(result) <- names(queries)
saveRDS(result, file = fn)
}Chapter 5
Show the code
fn <- file.path(params$chapter_5, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
) |>
stcompact()
queries <- lapply(
params$search_terms$chapter_5,
function(section) {
lapply(
section,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
}
)
result <- lapply(
names(queries),
function(sect_nm) {
result <- lapply(
names(queries[[sect_nm]]),
function(nm) {
message("Retrieving ", sect_nm, " - ", nm, " ...")
result <- c(
count = NA_integer_,
db_response_time_ms = NA_integer_,
page = NA_integer_,
per_page = NA_integer_
)
try(
result <- queries[[sect_nm]][nm] |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist(),
silent = FALSE
)
return(result)
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count)
browser()
rownames(result) <- names(queries[[sect_nm]])
return(result)
}
)
names(result) <- names(queries)
saveRDS(result, file = fn)
}Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Called from: FUN(X[[i]], ...)
debug: rownames(result) <- names(queries[[sect_nm]])
debug: return(result)
Chapter 6
Show the code
fn <- file.path(params$chapter_6, "st_hits.rds")
if (!file.exists(fn)) {
spcc <- paste0(
"(",
stcompact(params$search_terms$spc_corpus$spc),
") AND (",
stcompact(params$search_terms$spc_corpus$nature),
")"
)
queries <- lapply(
params$search_terms$chapter_6,
function(s) {
openalexPro::pro_query(
title_and_abstract.search = paste0(
"(",
spcc,
") AND (",
stcompact(s),
")"
),
type = params$types_filter,
from_publication_date = params$publication_date$from,
to_publication_date = params$publication_date$to
)
}
)
pbapply::pblapply(
queries,
function(query) {
query |>
openalexR::oa_request(
count_only = TRUE,
verbose = TRUE
) |>
unlist()
}
) |>
do.call(what = cbind) |>
t() |>
as.data.frame() |>
dplyr::select(count) |>
saveRDS(file = fn)
}Results
Assessment of Search Terms
The individual terms are assessed with the second term as AND, e,g. each individual term in spc is assessed with AND nature. In addition,
SPC Term
Show the code
readRDS(file.path(params$output, "searchterm_assessment_spcc.rds"))$spc |>
dplyr::arrange(desc(count)) |>
dplyr::mutate(
count = format(count, big.mark = ","),
count_excl = format(count_excl, big.mark = ","),
) |>
knitr::kable(format = "html", escape = FALSE)| term | count | count_excl |
|---|---|---|
| (planning AND ("for ecosystem services" OR process OR scenario OR tools)) | 1,218,727 | 746,350 |
| (scenario AND (analysis OR "based model" OR "based planning" OR building OR planning OR thinking OR "and models" OR "of land use")) | 1,022,316 | 706,717 |
| (spatial AND (composition OR configuration OR "conservation prioritisation" OR "conservation prioritization" OR decision OR development OR "forest planning" OR governance OR planning OR prioritisation OR prioritization OR transformation)) | 768,332 | 554,639 |
| ((anticipatory OR "community based" OR "forest management" OR "land-sea" OR participatory OR "place based" OR regional OR sectorial OR territorial OR urban OR "agricultural management") AND planning) | 663,643 | 324,115 |
| connectivity | 554,614 | 503,773 |
| restoration | 544,023 | 483,174 |
| (land AND (allocation OR governance OR system)) | 383,086 | 240,460 |
| (adaptive AND (management OR planning)) | 361,759 | 235,865 |
| (conservation AND (practice OR planning OR program OR strategy)) | 281,845 | 165,028 |
| (("key biodiversity" OR protected OR "remote ocean") AND areas) | 265,452 | 195,022 |
| (landscape AND (complexity OR planning OR governance OR management OR "ecological planning")) | 233,040 | 107,238 |
| ("land use" AND (decision OR planning OR governance OR management OR model OR scenario OR trade-offs OR tradeoffs)) | 227,101 | 75,476 |
| ((integrative OR "trends and") AND scenarios) | 196,829 | 54,368 |
| (animal AND (migration OR movement)) | 87,947 | 76,316 |
| (("cumulative impact" OR "environmental impact" OR "strategic environmental") AND assessment) | 70,707 | 51,970 |
| ((functional OR working) AND landscapes) | 68,857 | 40,036 |
| (ecological AND (corridor OR networks)) | 62,020 | 36,374 |
| zoning | 56,647 | 40,206 |
| (biodiversity AND (assessment OR indicators OR scenario)) | 56,260 | 23,818 |
| "systems integration" | 52,524 | 45,611 |
| ((blue OR green) AND infrastructure) | 40,341 | 24,940 |
| ("ecosystem service" AND (mapping OR model OR planning)) | 32,577 | 7,701 |
| ((inclusive OR marine) AND governance) | 26,441 | 16,587 |
| "stepping stones" | 18,505 | 16,047 |
| (nature AND ("based solutions" OR futures)) | 17,547 | 12,116 |
| (integrated AND ("assessment framework" OR "assessment model" OR "coastal zone management")) | 11,620 | 6,729 |
| ((habitat OR wildlife) AND corridor) | 10,666 | 3,089 |
| (("ecosystem based" OR "sea use") AND management) | 7,633 | 3,732 |
| "multi-criteria decision analysis" | 6,978 | 4,807 |
| rewilding | 2,204 | 1,480 |
| IPBES | 1,277 | 713 |
| (("generalized dissimilarity" OR macroecological) AND model) | 1,255 | 785 |
| "reserve design" | 806 | 353 |
| "futures thinking" | 675 | 464 |
| OECM | 372 | 229 |
| "critical areas for biodiversity" | 20 | 8 |
Nature Term
Show the code
readRDS(file.path(params$output, "searchterm_assessment_spcc.rds"))$nature |>
dplyr::arrange(desc(count)) |>
dplyr::mutate(
count = format(count, big.mark = ","),
count_excl = format(count_excl, big.mark = ","),
) |>
knitr::kable(format = "html", escape = FALSE)| term | count | count_excl |
|---|---|---|
| environment | 6,816,765 | 4,946,882 |
| species | 4,743,745 | 2,939,232 |
| nature | 4,031,428 | 3,096,309 |
| sustainable | 3,422,144 | 2,392,280 |
| soil | 2,212,414 | 1,381,827 |
| sea | 1,448,705 | 822,073 |
| forest | 1,205,932 | 568,890 |
| river | 1,166,528 | 622,388 |
| ecological | 1,092,089 | 342,458 |
| landscape | 1,024,014 | 571,791 |
| conservation | 991,371 | 432,153 |
| Earth | 971,303 | 619,412 |
| ecosystem | 961,345 | 226,109 |
| marine | 880,101 | 379,056 |
| ocean | 761,899 | 347,411 |
| habitat | 655,466 | 140,310 |
| lake | 574,163 | 312,252 |
| restoration | 544,023 | 358,130 |
| mountain | 501,342 | 249,611 |
| coast | 481,259 | 204,739 |
| biodiversity | 410,523 | 129,514 |
| terrestrial | 319,944 | 101,724 |
| freshwater | 254,084 | 78,441 |
| planet | 235,272 | 121,463 |
| flora | 233,964 | 117,103 |
| fauna | 211,730 | 58,681 |
| maritime | 181,995 | 106,630 |
| plantation | 176,543 | 79,327 |
| desert | 169,351 | 86,871 |
| wildlife | 166,122 | 47,477 |
| wetland | 165,543 | 57,306 |
| grassland | 139,372 | 33,128 |
| estuary | 112,545 | 32,468 |
| bog | 76,355 | 56,301 |
| marshes | 73,423 | 29,153 |
| "protected areas" | 70,012 | 11,160 |
| "natural resource" | 69,581 | 26,335 |
| "agricultural land" | 64,245 | 21,484 |
| meadow | 59,775 | 16,882 |
| woodland | 59,115 | 14,490 |
| biosphere | 51,901 | 13,261 |
| "coastal waters" | 41,463 | 11,565 |
| savanna | 32,749 | 9,332 |
| "coupled system" | 32,173 | 26,272 |
| dryland | 28,870 | 10,406 |
| peatland | 23,189 | 8,714 |
| "arable land" | 22,379 | 5,414 |
| tundra | 20,644 | 4,938 |
| mires | 19,932 | 12,355 |
| fjord | 16,056 | 6,554 |
| shrubland | 12,645 | 1,211 |
| bioeconomy | 10,182 | 4,627 |
| "resource system" | 6,004 | 3,264 |
| seascape | 5,059 | 1,203 |
| heathland | 4,024 | 855 |
| marshland | 3,806 | 931 |
| chaparral | 3,055 | 1,222 |
| "environmental resource" | 2,534 | 840 |
| agroforest | 1,828 | 336 |
| "agro-forest" | 567 | 0 |
Keypaper in Corpus
No filtering, neither by type nor by publication year is done. Therefore, the pure search terms are evaluated. If a paper is included in this table, doex not mean it is included in the final SPC Corpus due to filtering by dates and types!
Show the code
readRDS(file.path(params$keyworks, "kp_found_in.rds")) |>
dplyr::mutate(
id_display = sub("^.*/(W[0-9]+)$", "\\1", id),
id = sprintf("<a href=\"%s\" target=\"_blank\">%s</a>", id, id_display),
doi_display = sub("^https://doi.org/", "\\1", doi),
doi = sprintf("<a href=\"%s\" target=\"_blank\">%s</a>", doi, doi_display)
) |>
dplyr::arrange(
in_spcc,
in_spc,
in_nature,
in_openalex
) |>
dplyr::mutate(
dplyr::across(
dplyr::starts_with("in_"),
~ dplyr::case_when(
.x ~ '<b style="color:#008000;">☑</b>', # green bold checkbox
!.x ~ '<b style="color:#cc0000;">☐</b>' # red bold empty checkbox
)
)
) |>
dplyr::select(
id,
doi,
citation,
in_spcc,
in_spc,
in_nature,
in_openalex
) |>
knitr::kable(format = "html", escape = FALSE)| id | doi | citation | in_spcc | in_spc | in_nature | in_openalex |
|---|---|---|---|---|---|---|
| W4233598570 | 10.1146/annurev-anthro-102218-011435 | David Valentine & Amelia Hassoun (2019) | ☐ | ☐ | ☐ | ☑ |
| W2056591496 | 10.1016/s0016-3287(98)00101-3 | Richard A. Slaughter (1998) | ☐ | ☐ | ☐ | ☑ |
| W2090312322 | 10.1016/j.futures.2007.11.010 | Joseph Voros (2007) | ☐ | ☐ | ☐ | ☑ |
| W2795786882 | 10.1007/s00267-018-1028-3 | Ida N.S. Djenontin & Alison M. Meadow (2018) | ☐ | ☐ | ☐ | ☑ |
| W2128217744 | 10.1177/0306312713508669 | David H. Guston (2013) | ☐ | ☐ | ☐ | ☑ |
| W3170399214 | 10.1016/j.mex.2021.101401 | Daniel Beiderbeck et al. (2021) | ☐ | ☐ | ☐ | ☑ |
| W2964311550 | 10.1016/j.techfore.2019.07.002 | Ian Belton et al. (2019) | ☐ | ☐ | ☐ | ☑ |
| W4414957974 | 10.1073/pnas.2501695122 | Damaris Zurell et al. (2025) | ☐ | ☐ | ☑ | ☑ |
| W1992974326 | 10.1016/j.futures.2007.11.011 | Richard A. Slaughter (2007) | ☐ | ☑ | ☐ | ☑ |
| W4407294089 | 10.1080/02697459.2025.2459975 | Romina Rodela (2025) | ☐ | ☑ | ☐ | ☑ |
| W2116090915 | 10.1016/j.futures.2012.10.003 | Muhammad Amer et al. (2012) | ☐ | ☑ | ☐ | ☑ |
| W2057938345 | 10.1108/14636680810855991 | Sohail Inayatullah (2008) | ☐ | ☑ | ☐ | ☑ |
| W1973628253 | 10.1016/j.enpol.2005.12.006 | Will McDowall & Malcolm Eames (2006) | ☐ | ☑ | ☐ | ☑ |
| W4238224782 | 10.1016/j.futures.2015.08.007 | I. Milojević & Sohail Inayatullah (2015) | ☐ | ☑ | ☐ | ☑ |
| W2910481941 | 10.1080/02513625.2018.1562795 | Peter Schmitt & Thorsten Wiechmann (2018) | ☐ | ☑ | ☐ | ☑ |
| W1990273831 | 10.1126/science.1242552 | Silke Bauer & Bethany J. Hoye (2014) | ☑ | ☑ | ☑ | ☑ |
| W2784805535 | 10.1126/science.aam9712 | Marlee A. Tucker et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W3085078608 | 10.1038/s41467-020-18457-x | Michelle Ward et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W4281717750 | 10.1126/science.abl8974 | Angela Brennan et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W1880093763 | 10.1111/ecog.01507 | Rafael A. Magris et al. (2015) | ☑ | ☑ | ☑ | ☑ |
| W2791599583 | 10.1111/conl.12439 | Rafael A. Magris et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W2783683111 | 10.1016/j.biocon.2017.12.020 | Santiago Saura et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W4297536966 | 10.1016/j.tree.2022.09.002 | Maria Beger et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W2965201645 | 10.1016/j.biocon.2019.07.028 | Santiago Saura et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W3132073286 | 10.1016/j.biocon.2021.109008 | Annika T. H. Keeley et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W4390696637 | 10.1038/s41467-023-43832-9 | Rachel Neugarten et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W4302293680 | 10.1111/csp2.12823 | David M. Theobald et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4387055605 | 10.1038/s44183-023-00022-w | Julie Reimer et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4402144060 | 10.1002/ece3.70231 | Amanda Liczner et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W4412704230 | 10.1073/pnas.2410937122 | Robin Naidoo et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4280541891 | 10.3389/fevo.2022.830822 | Sylvia Wood et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4392367143 | 10.1111/brv.13066 | Steven J. Cooke et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W4410131928 | 10.3354/meps14888 | Susanne E. Tanner et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4414925393 | 10.1016/j.tree.2025.09.007 | Sandra Neubert et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4413449508 | 10.1038/s41467-025-63205-8 | Jedediah F. Brodie et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4415240687 | 10.1007/s10980-025-02210-0 | Tamsin L. Woodman et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W2093445010 | 10.1126/science.1258832 | Jianguo Liu et al. (2015) | ☑ | ☑ | ☑ | ☑ |
| W2122104680 | 10.1111/j.1523-1739.2009.01212.x | William J. Sutherland et al. (2009) | ☑ | ☑ | ☑ | ☑ |
| W2086673960 | 10.1016/j.tree.2009.04.008 | William J. Sutherland & Harry J. Woodroof (2009) | ☑ | ☑ | ☑ | ☑ |
| W3085006993 | 10.1002/pan3.10146 | Laura Pereira et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W2754686867 | 10.1038/s41559-017-0273-9 | Isabel M.D. Rosa et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W4210386268 | 10.1016/j.envsci.2022.01.013 | Andressa V. Mansur et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4380362703 | 10.1016/j.gloenvcha.2023.102681 | Hyejin Kim et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4210765186 | 10.1038/s41893-021-00844-x | Roslyn Henry et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4310004272 | 10.1007/s11625-022-01251-7 | Lucas Rutting et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W2255223904 | NA | Bob Scholes (2010) | ☑ | ☑ | ☑ | ☑ |
| W2978599153 | 10.26190/unsworks/27456 | Peter H. Verburg et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W1963746476 | 10.1016/j.ecocom.2009.10.006 | R.S. de Groot et al. (2009) | ☑ | ☑ | ☑ | ☑ |
| W2759207970 | 10.3390/su9091668 | Leena Karrasch et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W2487200415 | 10.1016/j.marpol.2016.06.023 | Elianny Domínguez-Tejo et al. (2016) | ☑ | ☑ | ☑ | ☑ |
| W3200717663 | 10.1007/s10980-021-01329-0 | Jianquan Dong et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W3159060995 | 10.1016/j.ecoser.2021.101273 | Karsten Grunewald et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W2956763155 | 10.1088/1748-9326/ab3234 | Annika T. H. Keeley et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W2595174916 | 10.1038/35012251 | C. R. Margules & Sahotra Sarkar (2000) | ☑ | ☑ | ☑ | ☑ |
| W4313593374 | 10.1016/j.mex.2022.101989 | Holly Kirk et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4412257196 | 10.5281/zenodo.6522392 | Unai Pascual et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W3100416804 | 10.1111/1365-2664.13796 | Virgilio Hermoso et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W3215595594 | 10.1093/biosci/biab091 | Abigail J. Lynch et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W4393866290 | 10.3390/su16072965 | Qiqi Hu et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W2554309037 | 10.1111/btp.12386 | Agnieszka E. Latawiec et al. (2016) | ☑ | ☑ | ☑ | ☑ |
| W3209482460 | 10.25607/obp-1666 | Alejandro Iglesias-Campos et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W4295308933 | 10.1073/pnas.2203385119 | Natalia Estrada-Carmona et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4320016094 | 10.1007/978-3-031-15773-8_4 | Falko Buschke et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4415164578 | 10.1098/rsos.250810 | Rachael Garrett et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W2971398159 | 10.1111/rec.13035 | George D. Gann et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W2114666631 | 10.1525/bio.2010.60.3.7 | Timothy J. Beechie et al. (2010) | ☑ | ☑ | ☑ | ☑ |
| W4395447577 | 10.1126/science.adn3441 | Henrique M. Pereira et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W3126018057 | 10.1111/rec.13346 | Jordi Cortina et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W2062482344 | 10.1073/pnas.1201040109 | Joshua Goldstein et al. (2012) | ☑ | ☑ | ☑ | ☑ |
| W1540682446 | 10.1111/brv.12008 | Aija S. Kukkala & Atte Moilanen (2012) | ☑ | ☑ | ☑ | ☑ |
| W3161819570 | 10.1126/science.abc4896 | Louise O’Connor et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W2015619301 | 10.1073/pnas.1000530107 | Lian Pin Koh & Jaboury Ghazoul (2010) | ☑ | ☑ | ☑ | ☑ |
| W4212886831 | 10.1111/geb.13459 | Karel Mokany et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W2952896657 | 10.5194/gmd-11-4537-2018 | Hyejin Kim et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W3151200781 | 10.1111/rec.13403 | Ben L. Gilby et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W3185562566 | 10.1038/d41586-021-02041-4 | Georgina G. Gurney et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W4406904698 | 10.1016/j.tree.2024.12.002 | Sylvaine Giakoumi et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W3074014079 | 10.1007/s10113-020-01685-8 | Clara J. Veerkamp et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W2769947232 | 10.1016/j.cosust.2017.10.004 | Jean Paul Metzger et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W4382181311 | 10.1007/s11625-023-01316-1 | América Paz Durán et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W3145276257 | 10.1016/j.jenvman.2021.112400 | Yuyoung Choi et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W3044450114 | 10.1016/j.envsoft.2020.104806 | Andrew J. Hoskins et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W2614376759 | 10.1016/j.envsci.2017.05.003 | Vanessa M. Adams et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W4382751812 | 10.1016/j.biocon.2023.110068 | Marcel Kok et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4298615974 | 10.1007/s10980-022-01534-5 | Tom Harwood et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W2972648221 | 10.1111/1365-2664.13506 | Karel Mokany et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W2766457534 | 10.1016/j.landusepol.2017.10.017 | Chiara Cortinovis & Davide Geneletti (2017) | ☑ | ☑ | ☑ | ☑ |
| W2035832288 | 10.1007/s10980-014-0085-0 | Christian Albert et al. (2014) | ☑ | ☑ | ☑ | ☑ |
| W2046569818 | 10.1007/s10980-014-0052-9 | Christine Fürst et al. (2014) | ☑ | ☑ | ☑ | ☑ |
| W2902345284 | 10.1007/s10980-018-0745-6 | Marcin Spyra et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W3134065015 | 10.1016/j.envsci.2021.02.001 | Davide Longato et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W2771003204 | 10.1080/21513732.2017.1396257 | Christine Fürst et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W2999493939 | 10.1016/j.landurbplan.2019.103741 | Christian Albert et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W3158973852 | 10.1016/j.landurbplan.2021.104129 | Chiara Cortinovis et al. (2021) | ☑ | ☑ | ☑ | ☑ |
| W2604803374 | 10.1093/biosci/bix012 | Charles H. Nilon et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W2592317409 | 10.1080/21513732.2017.1296494 | Justice Nana Inkoom et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W2966683717 | 10.1007/978-3-030-20024-4 | Davide Geneletti et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W2612157793 | 10.1016/j.marpol.2017.06.020 | Mara Ntona & Elisa Morgera (2017) | ☑ | ☑ | ☑ | ☑ |
| W4289516997 | 10.1007/s41207-022-00315-5 | Georgia Pozoukidou et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W4392293717 | 10.1016/j.ecolind.2024.111816 | Wen Song et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W2810876831 | 10.3897/rio.4.e28045 | Evelyn Underwood et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W2804302736 | 10.1016/j.scitotenv.2018.05.147 | Maria da Luz Fernandes et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W4376627395 | 10.1016/j.marpol.2023.105655 | Julie Reimer et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4406477943 | 10.1007/s11252-024-01656-5 | Israa Mahmoud et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4404646473 | 10.1007/s00267-024-02086-x | Nina Farwig et al. (2024) | ☑ | ☑ | ☑ | ☑ |
| W2904898541 | 10.1007/s10668-018-00300-5 | Azime Tezer et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W4220936177 | 10.1016/j.oneear.2022.02.008 | Christopher M. Raymond et al. (2022) | ☑ | ☑ | ☑ | ☑ |
| W2265414043 | 10.1146/annurev.ecolsys.32.081501.114012 | Steward T. A. Pickett et al. (2001) | ☑ | ☑ | ☑ | ☑ |
| W2918948909 | 10.1016/j.gecco.2019.e00569 | Arieanna C. Balbar & Anna Meta×as (2019) | ☑ | ☑ | ☑ | ☑ |
| W2099188808 | 10.1016/j.landurbplan.2006.04.005 | Jolande W. Termorshuizen et al. (2006) | ☑ | ☑ | ☑ | ☑ |
| W2027491594 | 10.1016/j.ecolind.2015.03.029 | Christian Albert et al. (2015) | ☑ | ☑ | ☑ | ☑ |
| W2766942546 | 10.1080/08920753.2017.1373450 | Kekuewa Kikiloi et al. (2017) | ☑ | ☑ | ☑ | ☑ |
| W3194313759 | 10.1007/978-94-024-1681-7 | Christina von Haaren et al. (2019) | ☑ | ☑ | ☑ | ☑ |
| W1966247992 | 10.1080/21513732.2011.617711 | Davide Geneletti (2011) | ☑ | ☑ | ☑ | ☑ |
| W4409833817 | 10.1126/science.adn2225 | Jedediah F. Brodie et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W2884329716 | 10.1007/978-3-319-94021-2 | László Miklós & Anna Špinerová (2018) | ☑ | ☑ | ☑ | ☑ |
| W2524916285 | 10.1002/aqc.2645 | Alan M. Friedlander et al. (2016) | ☑ | ☑ | ☑ | ☑ |
| W3021127236 | 10.1016/j.marpol.2020.103950 | Thomas Robertson et al. (2020) | ☑ | ☑ | ☑ | ☑ |
| W4410629764 | 10.1016/j.rsma.2025.104257 | Liisi Lees et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4413900892 | 10.1016/j.tree.2025.07.014 | Jian Peng et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4412750811 | 10.1016/j.marpol.2025.106852 | Jean‐Eudes Beuret et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W2023339029 | 10.1046/j.1523-1739.2003.01491.x | Garry Peterson et al. (2003) | ☑ | ☑ | ☑ | ☑ |
| W2028797766 | 10.1016/j.cosust.2013.05.002 | Ralf Seppelt et al. (2013) | ☑ | ☑ | ☑ | ☑ |
| W2073677603 | 10.1016/j.biocon.2015.02.015 | Sebastián Martinuzzi et al. (2015) | ☑ | ☑ | ☑ | ☑ |
| W2159760863 | 10.1111/j.1466-8238.2010.00620.x | Joachim H. Spangenberg et al. (2011) | ☑ | ☑ | ☑ | ☑ |
| W2015646994 | 10.1016/j.tree.2014.07.005 | Carly N. Cook et al. (2014) | ☑ | ☑ | ☑ | ☑ |
| W1990241575 | 10.1007/s10021-004-0074-2 | Paul Raskin (2005) | ☑ | ☑ | ☑ | ☑ |
| W4386734502 | 10.1146/annurev-environ-112321-095011 | Steven J. Cork et al. (2023) | ☑ | ☑ | ☑ | ☑ |
| W4411717980 | 10.1007/s11625-025-01682-y | Sana Okayasu et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W2161139387 | 10.1126/science.1196624 | Henrique M. Pereira et al. (2010) | ☑ | ☑ | ☑ | ☑ |
| W56780107 | 10.1007/978-1-4612-0529-6_10 | Jack Ahern (1999) | ☑ | ☑ | ☑ | ☑ |
| W2156111479 | 10.1111/gcb.12383 | Sebastián Martinuzzi et al. (2013) | ☑ | ☑ | ☑ | ☑ |
| W2902463689 | 10.1016/j.tree.2018.10.006 | Emily Nicholson et al. (2018) | ☑ | ☑ | ☑ | ☑ |
| W4406487214 | 10.1007/s10980-024-02042-4 | Jiangxiao Qiu et al. (2025) | ☑ | ☑ | ☑ | ☑ |
| W4386609980 | 10.1038/s43588-023-00503-5 | Yu Zheng et al. (2023) | ☑ | ☑ | ☑ | ☑ |
SPC Corpus Measures and Numbers
These data is gathered from OpenAlex directly, not downloaded any works. The data is used to assess the quality of the TCA Corpus.
The query contains: - the search term (nature, spc, spcc) - the types selected (article, book, book-chapter, dissertation, editorial, preprint, report, review) - the date range (from 1992-01-01 to 2025-12-31)
Overall counts
Show the code
readRDS(file.path(params$corpus, "st_hits.rds")) |>
dplyr::mutate(
count = format(count, big.mark = ",")
) |>
knitr::kable(format = "html", escape = FALSE)| count | |
|---|---|
| spc | 5,469,593 |
| nature | 23,683,854 |
| spcc | 2,723,160 |
| openalex | 204,670,196 |
Show the code
corpus_counts <- readRDS(file.path(params$corpus, "st_hits.rds"))
render_mermaid(
file.path("figures", "overview.mmd"),
list(
SPC_LIST = format_count(corpus_counts[["spc", "count"]]),
NATURE_LIST = format_count(corpus_counts[["nature", "count"]]),
BASE_QUERY = format_count(corpus_counts[["spcc", "count"]])
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart TD
Start([Start literature search]) --> SPC["<u><span style='color:#1a0dab;'>spc_corpus.yaml<br/>Assemble base SPC corpus</span></u>"]
click SPC "./input/search_terms/spc_corpus.yaml" "Open spc_corpus.yaml"
SPC --> SPC_list["spc keyword set<br/>(planning & connectivity terms)<br/>(n = 5,469,593)"
]
SPC --> NATURE_list["nature keyword set<br/>(environmental context terms)<br/>(n = 23,683,854)"
]
SPC_list --> BaseQuery["Level 1 query<br/>spc terms AND nature dictionary<br/>(n = 2,723,160)"
]
NATURE_list --> BaseQuery
BaseQuery --> ChapterSelect{Apply chapter / theme refinements}
ChapterSelect --> CH1["<u><span style='color:#1a0dab;'>Chapter 1<br/>chapter_1.yaml<br/>Governance & planning principles</span></u>"]
click CH1 "./input/search_terms/chapter_1.yaml" "Open chapter_1.yaml"
ChapterSelect --> CH2["<u><span style='color:#1a0dab;'>Chapter 2<br/>chapter_2.yaml<br/>GBF targets, nexus themes, SDGs</span></u>"]
click CH2 "./input/search_terms/chapter_2.yaml" "Open chapter_2.yaml"
ChapterSelect --> CH3["<u><span style='color:#1a0dab;'>Chapter 3<br/>chapter_3.yaml<br/>Restoration & conservation planning</span></u>"]
click CH3 "./input/search_terms/chapter_3.yaml" "Open chapter_3.yaml"
ChapterSelect --> CH4["<u><span style='color:#1a0dab;'>Chapter 4<br/>chapter_4.yaml<br/>Connectivity evidence & metrics</span></u>"]
click CH4 "./input/search_terms/chapter_4.yaml" "Open chapter_4.yaml"
ChapterSelect --> CH5["<u><span style='color:#1a0dab;'>Chapter 5<br/>chapter_5.yaml<br/>Foresight & futures (sections, themes, cross-cutting)</span></u>"]
click CH5 "./input/search_terms/Chapter_5_1_2.yaml" "Open Chapter 5 search terms"
ChapterSelect --> CH6["<u><span style='color:#1a0dab;'>Chapter 6<br/>chapter_6.yaml (+ chapter_6_r2.yaml optional)<br/>Enabling environment</span></u>"]
click CH6 "./input/search_terms/chapter_6.yaml" "Open chapter_6.yaml"
Publication Years
Show the code
readRDS(file.path(params$corpus, "st_years.rds")) |>
dplyr::mutate(
dplyr::across(
dplyr::starts_with("count_"),
~ base::format(.x, big.mark = ",")
)
) |>
knitr::kable(format = "html", escape = FALSE)| year | count_openalex | count_spc | count_nature | count_spcc |
|---|---|---|---|---|
| 2025 | 6,759,989 | 307,595 | 1,139,326 | 177,274 |
| 2024 | 8,779,563 | 392,120 | 1,425,355 | 210,763 |
| 2023 | 8,797,625 | 395,085 | 1,431,833 | 200,199 |
| 2022 | 8,839,461 | 379,614 | 1,386,345 | 180,606 |
| 2021 | 8,614,182 | 340,394 | 1,296,829 | 170,475 |
| 2020 | 9,447,631 | 330,363 | 1,284,708 | 163,343 |
| 2019 | 9,300,213 | 298,454 | 1,184,897 | 146,454 |
| 2018 | 8,991,626 | 267,745 | 1,089,991 | 131,015 |
| 2017 | 8,935,977 | 244,799 | 1,017,004 | 118,811 |
| 2016 | 9,093,825 | 232,566 | 982,842 | 113,645 |
| 2015 | 8,858,710 | 227,094 | 966,034 | 111,768 |
| 2014 | 8,657,187 | 214,951 | 940,767 | 105,683 |
| 2013 | 8,386,159 | 202,080 | 903,931 | 99,187 |
| 2012 | 7,923,316 | 183,481 | 843,222 | 90,246 |
| 2011 | 7,666,345 | 170,144 | 790,533 | 83,283 |
| 2010 | 7,162,982 | 154,035 | 735,950 | 75,462 |
| 2009 | 6,722,036 | 137,435 | 670,965 | 66,977 |
| 2008 | 6,207,513 | 122,736 | 602,468 | 59,686 |
| 2007 | 5,758,445 | 109,176 | 553,764 | 53,313 |
| 2006 | 5,434,369 | 100,451 | 514,734 | 48,715 |
| 2005 | 4,975,856 | 88,987 | 465,762 | 43,441 |
| 2004 | 4,580,708 | 78,163 | 420,561 | 38,012 |
| 2003 | 4,281,875 | 71,410 | 391,727 | 34,653 |
| 2002 | 4,073,254 | 68,433 | 377,725 | 32,396 |
| 2001 | 3,482,992 | 51,394 | 309,300 | 25,400 |
| 2000 | 3,500,850 | 47,806 | 296,078 | 23,593 |
| 1999 | 2,882,341 | 40,271 | 250,190 | 19,497 |
| 1998 | 2,788,425 | 37,325 | 237,644 | 17,903 |
| 1997 | 2,624,912 | 34,810 | 222,653 | 16,502 |
| 1996 | 2,525,756 | 33,373 | 216,682 | 15,625 |
| 1995 | 2,330,686 | 30,547 | 201,033 | 14,274 |
| 1994 | 2,200,817 | 27,518 | 186,901 | 12,634 |
| 1993 | 2,089,662 | 25,549 | 178,050 | 11,621 |
| 1992 | 1,994,908 | 23,689 | 168,050 | 10,704 |
This graph only shows the relative nuymber of publications per year to identify different trends.
Show the code
readRDS(file.path(params$corpus, "st_years.rds")) |>
tidyr::pivot_longer(
cols = dplyr::starts_with("count_"),
names_to = "source",
values_to = "count",
names_prefix = "count_"
) |>
# scale each source so its total sum is 1
dplyr::group_by(source) |>
dplyr::mutate(
total_count = base::sum(count, na.rm = TRUE),
count = dplyr::if_else(total_count > 0, count / total_count, 0)
) |>
dplyr::ungroup() |>
dplyr::select(-total_count) |>
ggplot2::ggplot(ggplot2::aes(x = year, y = count, color = source)) +
ggplot2::geom_line(linewidth = 1) +
ggplot2::geom_point(size = 1.5) +
ggplot2::scale_y_continuous(
labels = scales::label_percent(accuracy = 1),
expand = ggplot2::expansion(mult = c(0.02, 0.06))
) +
ggplot2::labs(
x = "Year",
y = "Share of total works (sum-scaled per source)",
color = "Source",
title = "Publications per year by source (each source sums to 1)"
) +
ggplot2::theme_minimal(base_size = 14) +
ggplot2::theme(
legend.position = "bottom",
panel.grid.minor = ggplot2::element_blank()
)Language
Show the code
readRDS(file.path(params$corpus, "st_languages.rds")) |>
dplyr::mutate(
dplyr::across(
dplyr::starts_with("count_"),
~ base::format(.x, big.mark = ",")
)
) |>
knitr::kable(format = "html", escape = FALSE)| language | count_openalex | count_spc | count_nature | count_spcc |
|---|---|---|---|---|
| English | 148,822,592 | 5,137,041 | 22,098,469 | 2,578,596 |
| Spanish | 7,992,326 | 70,344 | 340,520 | 27,611 |
| Japanese | 7,787,043 | 1,671 | 14,540 | 778 |
| French | 5,975,477 | 36,971 | 264,236 | 17,697 |
| German | 5,947,018 | 13,788 | 65,913 | 4,855 |
| Chinese | 4,522,690 | 3,759 | 35,365 | 1,720 |
| Portuguese | 4,328,272 | 31,390 | 133,983 | 15,180 |
| Indonesian | 3,064,780 | 41,054 | 164,597 | 13,762 |
| Korean | 3,004,649 | 27,136 | 98,825 | 12,176 |
| Russian | 2,810,496 | 27,888 | 133,723 | 13,502 |
| Italian | 1,360,461 | 7,177 | 31,499 | 3,990 |
| Polish | 1,266,223 | 4,427 | 24,397 | 2,300 |
| Turkish | 883,660 | 5,385 | 25,615 | 2,648 |
| Dutch | 829,340 | 2,141 | 12,381 | 1,083 |
| Arabic | 733,470 | 3,566 | 18,605 | 1,421 |
| Ukrainian | 552,461 | 5,708 | 21,025 | 2,951 |
| Swedish | 512,730 | 5,529 | 17,880 | 2,380 |
| Persian | 489,594 | 2,445 | 7,638 | 1,420 |
| Czech | 486,998 | 4,091 | 17,725 | 1,469 |
| Catalan | 322,666 | 1,252 | 8,669 | 652 |
| Croatian | 228,058 | 2,992 | 13,096 | 1,366 |
| Norwegian | 196,572 | 1,015 | 4,674 | 431 |
| Finnish | 189,872 | 856 | 3,539 | 405 |
| Latvian | 188,997 | 2,850 | 13,086 | 580 |
| Hungarian | 176,004 | 1,560 | 7,158 | 744 |
| Modern Greek (1453-) | 161,595 | 1,049 | 4,177 | 503 |
| Danish | 160,677 | 323 | 2,656 | 126 |
| Malay (macrolanguage) | 153,000 | 2,645 | 10,174 | 1,198 |
| Thai | 108,263 | 2,585 | 5,217 | 860 |
| Slovenian | 106,919 | 805 | 3,628 | 392 |
| Lithuanian | 92,243 | 541 | 2,253 | 286 |
| Vietnamese | 80,016 | 215 | 1,462 | 141 |
| Serbo-Croatian | 79,436 | 1,216 | 4,227 | 510 |
| Romanian | 71,162 | 610 | 3,741 | 302 |
| Serbian | 65,139 | 538 | 2,476 | 253 |
| NA | 50,703 | 292 | 2,935 | 172 |
| Slovak | 37,104 | 301 | 1,594 | 130 |
| Estonian | 32,065 | 180 | 1,371 | 103 |
| Galician | 31,130 | 121 | 651 | 33 |
| Hebrew | 26,516 | 221 | 2,518 | 116 |
| Bulgarian | 25,723 | 178 | 862 | 98 |
| Basque | 25,334 | 114 | 603 | 44 |
| Uzbek | 25,000 | 10 | 1,093 | 5 |
| Afrikaans | 24,429 | 299 | 1,619 | 164 |
| Latin | 21,587 | 68 | 535 | 37 |
| Esperanto | 21,008 | 112 | 688 | 45 |
| Hindi | 13,249 | 24 | 194 | 8 |
| Kazakh | 12,109 | 152 | 713 | 71 |
| Icelandic | 11,393 | 57 | 271 | 29 |
| Azerbaijani | 11,283 | 91 | 382 | 60 |
| Norwegian Nynorsk | 10,321 | 49 | 204 | 22 |
| Macedonian | 8,080 | 55 | 209 | 16 |
| Bosnian | 7,609 | 85 | 365 | 40 |
| Albanian | 7,221 | 24 | 149 | 17 |
| Georgian | 6,390 | 40 | 173 | 26 |
| Tagalog | 5,503 | 66 | 277 | 30 |
| Belarusian | 5,016 | 16 | 84 | 9 |
| Armenian | 4,712 | 86 | 424 | 48 |
| Tamil | 4,469 | 11 | 106 | 3 |
| Welsh | 4,229 | 9 | 86 | 5 |
| Urdu | 3,971 | 16 | 220 | 7 |
| Tajik | 3,827 | 7 | 25 | 3 |
| Irish | 3,788 | 17 | 169 | 13 |
| Yiddish | 3,734 | 20 | 422 | 10 |
| Mongolian | 3,521 | 14 | 95 | 5 |
| Nepali (macrolanguage) | 3,180 | 13 | 121 | 6 |
| Swahili (macrolanguage) | 3,036 | 11 | 74 | 8 |
| Bengali | 2,780 | 14 | 43 | 9 |
| Malagasy | 2,741 | 5 | 71 | 3 |
| Occitan (post 1500) | 2,415 | 10 | 41 | 4 |
| Kannada | 2,127 | 10 | 78 | 4 |
| Pushto | 2,080 | 1 | 7 | 0 |
| Western Frisian | 2,076 | 12 | 57 | 7 |
| Marathi | 2,060 | 6 | 49 | 4 |
| Ido | 2,015 | 19 | 158 | 13 |
| Breton | 1,935 | 10 | 60 | 5 |
| Malayalam | 1,504 | 7 | 99 | 3 |
| Javanese | 1,391 | 16 | 63 | 5 |
| Kirghiz | 1,214 | 10 | 62 | 2 |
| Kurdish | 1,165 | 4 | 23 | 3 |
| Luxembourgish | 1,105 | 4 | 46 | 3 |
| Sundanese | 1,016 | 5 | 49 | 1 |
| Sanskrit | 1,006 | 0 | 11 | 0 |
| Maltese | 963 | 1 | 12 | 0 |
| Sinhala | 793 | 3 | 9 | 1 |
| Interlingua (International Auxiliary Language Association) | 768 | 5 | 17 | 3 |
| Telugu | 767 | 2 | 36 | 2 |
| Gujarati | 685 | 1 | 6 | 1 |
| Interlingue | 673 | 11 | 29 | 4 |
| Tatar | 626 | 7 | 11 | 4 |
| Walloon | 585 | 3 | 25 | 1 |
| Scottish Gaelic | 571 | 1 | 10 | 1 |
| Ndonga | 547 | 69 | 253 | 49 |
| Bashkir | 524 | 2 | 8 | 0 |
| Dhivehi | 482 | 0 | 3 | 0 |
| Volapük | 347 | 4 | 7 | 1 |
| Oriya (macrolanguage) | 341 | 0 | 2 | 0 |
| Burmese | 340 | 3 | 16 | 1 |
| Panjabi | 334 | 0 | 11 | 0 |
| Somali | 311 | 2 | 4 | 1 |
| Tibetan | 311 | 0 | 4 | 0 |
| Aragonese | 305 | 1 | 5 | 0 |
| Haitian | 292 | 1 | 15 | 1 |
| Cornish | 236 | 0 | 5 | 0 |
| Lao | 223 | 2 | 11 | 1 |
| Central Khmer | 220 | 4 | 7 | 1 |
| Amharic | 184 | 2 | 4 | 2 |
| Quechua | 183 | 0 | 6 | 0 |
| Chechen | 143 | 0 | 1 | 0 |
| Manx | 141 | 2 | 6 | 0 |
| Limburgan | 138 | 0 | 1 | 0 |
| Romansh | 124 | 2 | 4 | 0 |
| Yoruba | 98 | 2 | 7 | 1 |
| Guarani | 97 | 0 | 1 | 0 |
| Sindhi | 97 | 0 | 0 | 0 |
| Uighur | 62 | 0 | 1 | 0 |
| Turkmen | 61 | 1 | 1 | 1 |
| Assamese | 52 | 0 | 0 | 0 |
| Faroese | 50 | 8 | 28 | 8 |
| Chuvash | 42 | 0 | 2 | 0 |
| Ossetian | 35 | 0 | 0 | 0 |
| Norwegian Bokmål | 31 | 0 | 1 | 0 |
| Komi | 23 | 6 | 4 | 4 |
| Sardinian | 14 | 0 | 1 | 0 |
| Corsican | 11 | 0 | 0 | 0 |
| Avaric | 9 | 0 | 0 | 0 |
| Inuktitut | 1 | 0 | 0 | 0 |
| Northern Sami | 1 | 0 | 0 | 0 |
| Tsonga | 1 | 0 | 0 | 0 |
This graph only shows the relative number of publications per year to identify different trends.
Show the code
readRDS(file.path(params$corpus, "st_languages.rds")) |>
# keep top 15 languages by total (before scaling)
dplyr::mutate(
total = count_openalex + count_spc + count_nature + count_spcc
) |>
dplyr::slice_max(total, n = 15) |>
dplyr::arrange(dplyr::desc(total)) |>
# fix display order so largest stays on top
dplyr::mutate(language = factor(language, levels = rev(language))) |>
dplyr::select(-total) |>
# reshape wide → long
tidyr::pivot_longer(
cols = dplyr::starts_with("count_"),
names_to = "source",
values_to = "count",
names_prefix = "count_"
) |>
# scale so each source sums to 1
dplyr::group_by(source) |>
dplyr::mutate(
total_source = base::sum(count, na.rm = TRUE),
count = dplyr::if_else(total_source > 0, count / total_source, 0)
) |>
dplyr::ungroup() |>
dplyr::select(-total_source) |>
ggplot2::ggplot(ggplot2::aes(x = language, y = count, fill = source)) +
ggplot2::geom_col(position = "dodge") +
ggplot2::coord_flip() +
ggplot2::scale_y_continuous(
labels = scales::label_percent(accuracy = 1),
expand = ggplot2::expansion(mult = c(0, 0.05))
) +
ggplot2::labs(
x = "Language",
y = "Share of total works within each source",
fill = "Source",
title = "Publications by language (top 15), scaled so each source sums to 1"
) +
ggplot2::theme_minimal(base_size = 14) +
ggplot2::theme(
legend.position = "bottom",
panel.grid.minor = ggplot2::element_blank()
)Individual Chapter
Here we show the sub-searches for the individual chapters. In the tables indicating the number, an NA value indicates that the search string was to long (most likely) or any other error occured in the search. The same applies when an error message is given.
Chapter 1
Show the code
ch1_hits <- readRDS(file.path(params$chapter_1, "st_hits.rds"))
ch1_counts <- setNames(ch1_hits$count, rownames(ch1_hits))
ch1_hits |>
dplyr::mutate(count = format_count(count)) |>
knitr::kable(
col.names = c("Count"),
align = "r"
)| Count | |
|---|---|
| Set 1 | 7 |
| Set 2 | 323 |
| Set 3 | 8 |
| Set 4 | 7 |
| Set 5 | 172 |
| Set 6 | 1,430 |
| Set 7 | 0 |
Show the code
render_mermaid(
file.path("figures", "chapter1.mmd"),
c(
C1_1 = format_count(ch1_counts[["Set 1"]]),
C1_2 = format_count(ch1_counts[["Set 2"]]),
C1_3 = format_count(ch1_counts[["Set 3"]]),
C1_4 = format_count(ch1_counts[["Set 4"]]),
C1_5 = format_count(ch1_counts[["Set 5"]]),
C1_6 = format_count(ch1_counts[["Set 6"]]),
C1_7 = format_count(ch1_counts[["Set 7"]])
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch1["<u><span style='color:#1a0dab;'>chapter_1.yaml<br/>Level 2 refinements</span></u>"]
click Ch1 "./input/search_terms/chapter_1.yaml" "Open chapter_1.yaml"
subgraph Chapter1Sets["Chapter 1 thematic searches"]
direction TB
C1_1["Set 1:<br/>land/spatial planning<br/>+ biodiversity goals<br/>+ societal needs/values<br/>(n = 7)"]
C1_2["Set 2:<br/>adaptive/scenario planning<br/>+ monitoring/feedback<br/>(n = 323)"]
C1_3["Set 3:<br/>evidence & precaution<br/>+ ILK knowledge base<br/>(n = 8)"]
C1_4["Set 4:<br/>multilevel/transparent governance<br/>+ customary coherence<br/>(n = 7)"]
C1_5["Set 5:<br/>participatory planning<br/>+ co-design / engagement<br/>(n = 172)"]
C1_6["Set 6:<br/>equity / rights / tenure<br/>+ justice outcomes<br/>(n = 1,430)"]
C1_7["Set 7:<br/>connectivity (land-sea/cross-scale)<br/>+ nexus & climate links<br/>(n = 0)"]
end
Ch1 --> C1_1
Ch1 --> C1_2
Ch1 --> C1_3
Ch1 --> C1_4
Ch1 --> C1_5
Ch1 --> C1_6
Ch1 --> C1_7
Chapter 2
Show the code
ch2_hits <- readRDS(file.path(params$chapter_2, "st_hits.rds"))
ch2_counts <- lapply(ch2_hits, function(df) {
setNames(df$count, rownames(df))
})
do.call(
rbind,
lapply(names(ch2_hits), function(sect_nm) {
df <- ch2_hits[[sect_nm]]
df$section <- sect_nm
df$set <- rownames(df)
rownames(df) <- NULL
df[,
c("section", "set", setdiff(names(df), c("section", "set"))),
drop = FALSE
]
})
) |>
dplyr::mutate(
count = format_count(count)
) |>
knitr::kable(
col.names = c("Section", "Set", "Count"),
align = c("c", "c", "r")
)| Section | Set | Count |
|---|---|---|
| GBF | GBF-1 - Urban | 360,504 |
| GBF | GBF-1 - Rural | 523,744 |
| GBF | GBF-1 - Freshwater | 736,401 |
| GBF | GBF-1 - Marine | 272,191 |
| GBF | GBF - 2 (Ecosystem restoration) | 1,007,104 |
| Targets | Target 3 (Protected areas / conservation coverage) | 521,380 |
| Targets | Target 4 (Species extinction & genetic diversity) | 42,236 |
| Targets | Target 5 (Wild species trade & use) | 78,533 |
| Targets | Target 6 (Invasive alien species) | 14,338 |
| Targets | Target 7 (Pollution) | 193,450 |
| Targets | Target 8 (Climate change & resilience) | 224,536 |
| Targets | Target 9 (Wild species management & use) | 8,789 |
| Targets | Target 10 (Sustainability in agriculture, aquaculture, forestry & fisheries) | 262,439 |
| Targets | Target 11 (Nature’s contributions to people / ecosystem services) | 57,410 |
| Targets | Target 12 (Green & blue spaces, urban planning) | 64,676 |
| Targets | Target 13 (Genetic resources & benefit sharing) | 9,836 |
| Targets | Target 14 (Biodiversity integration in decision-making) | 141,058 |
| Targets | Target 15 (Business & financial institutions disclosure & risk) | 242,167 |
| Targets | Target 16 (Sustainable consumption) | 91,241 |
| Targets | Target 17 (Biosafety) | 8,226 |
| Targets | Target 18 (Harmful incentives / subsidies) | 43,606 |
| Targets | Target 19 (Finance mobilisation) | 83,265 |
| Targets | Target 20 (Capacity building, technology & cooperation) | 477,610 |
| Targets | Target 21 (Data, knowledge & monitoring) | 1,158,163 |
| Targets | Target 22 (Participation & inclusion) | 147,350 |
| Targets | Target 23 (Gender equality) | 65,793 |
| Related to spatial planning process | Set Related | 123,964 |
| Nexus | Water | 450,518 |
| Nexus | Food | 360,589 |
| Nexus | Health | 375,691 |
| Nexus | Climate | 577,765 |
Show the code
ch2_gbf <- ch2_counts[["GBF"]]
ch2_targets <- ch2_counts[["Targets"]]
ch2_rel <- ch2_counts[["Related to spatial planning process"]]
ch2_nexus <- ch2_counts[["Nexus"]]
fmt_gbf <- function(name) format_count(ch2_gbf[[name]])
fmt_target <- function(name) format_count(ch2_targets[[name]])
fmt_rel <- function(name) format_count(ch2_rel[[name]])
fmt_nexus <- function(name) format_count(ch2_nexus[[name]])
render_mermaid(
file.path("figures", "chapter2.mmd"),
c(
GBF_Urban = fmt_gbf("GBF-1 - Urban"),
GBF_Rural = fmt_gbf("GBF-1 - Rural"),
GBF_Fresh = fmt_gbf("GBF-1 - Freshwater"),
GBF_Marine = fmt_gbf("GBF-1 - Marine"),
GBF_Restore = fmt_gbf("GBF - 2 (Ecosystem restoration)"),
T3 = fmt_target("Target 3 (Protected areas / conservation coverage)"),
T4 = fmt_target("Target 4 (Species extinction & genetic diversity)"),
T5 = fmt_target("Target 5 (Wild species trade & use)"),
T6 = fmt_target("Target 6 (Invasive alien species)"),
T7 = fmt_target("Target 7 (Pollution)"),
T8 = fmt_target("Target 8 (Climate change & resilience)"),
T9 = fmt_target("Target 9 (Wild species management & use)"),
T10 = fmt_target(
"Target 10 (Sustainability in agriculture, aquaculture, forestry & fisheries)"
),
T11 = fmt_target(
"Target 11 (Nature\u2019s contributions to people / ecosystem services)"
),
T12 = fmt_target("Target 12 (Green & blue spaces, urban planning)"),
T13 = fmt_target("Target 13 (Genetic resources & benefit sharing)"),
T14 = fmt_target("Target 14 (Biodiversity integration in decision-making)"),
T15 = fmt_target(
"Target 15 (Business & financial institutions disclosure & risk)"
),
T16 = fmt_target("Target 16 (Sustainable consumption)"),
T17 = fmt_target("Target 17 (Biosafety)"),
T18 = fmt_target("Target 18 (Harmful incentives / subsidies)"),
T19 = fmt_target("Target 19 (Finance mobilisation)"),
T20 = fmt_target("Target 20 (Capacity building, technology & cooperation)"),
T21 = fmt_target("Target 21 (Data, knowledge & monitoring)"),
T22 = fmt_target("Target 22 (Participation & inclusion)"),
T23 = fmt_target("Target 23 (Gender equality)"),
REL = fmt_rel("Set Related"),
Nexus_Water = fmt_nexus("Water"),
Nexus_Food = fmt_nexus("Food"),
Nexus_Health = fmt_nexus("Health"),
Nexus_Climate = fmt_nexus("Climate")
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch2L2["<u><span style='color:#1a0dab;'>chapter_2.yaml<br/>Level 2 GBF bundles</span></u>"]
click Ch2L2 "../search_terms/chapter_2.yaml" "Open chapter_2.yaml"
subgraph L1_GBF["GBF contexts & targets"]
direction TB
GBF_Urban["GBF-1 Urban<br/>(n = 360,504)"]
GBF_Rural["GBF-1 Rural<br/>(n = 523,744)"]
GBF_Fresh["GBF-1 Freshwater<br/>(n = 736,401)"]
GBF_Marine["GBF-1 Marine<br/>(n = 272,191)"]
GBF_Restore["GBF-2 Ecosystem restoration<br/>(n = 1,007,104)"]
end
Ch2L2 --> GBF_Urban
Ch2L2 --> GBF_Rural
Ch2L2 --> GBF_Fresh
Ch2L2 --> GBF_Marine
Ch2L2 --> GBF_Restore
subgraph L1_TARGET["GBF contexts & targets"]
T3["Target 3<br/>(n = 521,380)"]
T4["Target 4<br/>(n = 42,236)"]
T5["Target 5<br/>(n = 78,533)"]
T6["Target 6<br/>(n = 14,338)"]
T7["Target 7<br/>(n = 193,450)"]
T8["Target 8<br/>(n = 224,536)"]
T9["Target 9<br/>(n = 8,789)"]
T10["Target 10<br/>(n = 262,439)"]
T11["Target 11<br/>(n = 57,410)"]
T12["Target 12<br/>(n = 64,676)"]
T13["Target 13<br/>(n = 9,836)"]
T14["Target 14<br/>(n = 141,058)"]
T15["Target 15<br/>(n = 242,167)"]
T16["Target 16<br/>(n = 91,241)"]
T17["Target 17<br/>(n = 8,226)"]
T18["Target 18<br/>(n = 43,606)"]
T19["Target 19<br/>(n = 83,265)"]
T20["Target 20<br/>(n = 477,610)"]
T21["Target 21<br/>(n = 1,158,163)"]
T22["Target 22<br/>(n = 147,350)"]
T23["Target 23<br/>(n = 65,793)"]
end
Ch2L2 --> T3
Ch2L2 --> T4
Ch2L2 --> T5
Ch2L2 --> T6
Ch2L2 --> T7
Ch2L2 --> T8
Ch2L2 --> T9
Ch2L2 --> T10
Ch2L2 --> T11
Ch2L2 --> T12
Ch2L2 --> T13
Ch2L2 --> T14
Ch2L2 --> T15
Ch2L2 --> T16
Ch2L2 --> T17
Ch2L2 --> T18
Ch2L2 --> T19
Ch2L2 --> T20
Ch2L2 --> T21
Ch2L2 --> T22
Ch2L2 --> T23
subgraph L1_REL["Spatial Planning Related"]
REL["Spatial Planning Related<br/>(n = 123,964)"]
end
Ch2L2 --> REL
subgraph L1_NexusSets["Nexus"]
direction TB
Nexus_Water["Water<br/>(n = 450,518)"]
Nexus_Food["Food<br/>(n = 360,589)"]
Nexus_Health["Health<br/>(n = 375,691)"]
Nexus_Climate["Climate<br/>(n = 577,765)"]
end
Ch2L2 --> Nexus_Water
Ch2L2 --> Nexus_Food
Ch2L2 --> Nexus_Health
Ch2L2 --> Nexus_Climate
L1_GBF --> Ch2L4["<u><span style='color:#1a0dab;'>chapter_2_sdg.yaml<br/>Level 4 SDG filters</span></u>"]
L1_NexusSets --> Ch2L4
L1_REL --> Ch2L4
click Ch2L4 "../search_terms/chapter_2_sdg.yaml" "Open chapter_2_sdg.yaml"
subgraph SDGSets["SDG goal filters"]
direction TB
SDG1["SDG 1"]
SDG2["SDG 2"]
SDG3["SDG 3"]
SDG4["SDG 4"]
SDG5["SDG 5"]
SDG6["SDG 6"]
SDG7["SDG 7"]
SDG8["SDG 8"]
SDG9["SDG 9"]
SDG10["SDG 10"]
SDG11["SDG 11"]
SDG12["SDG 12"]
SDG13["SDG 13"]
SDG14["SDG 14"]
SDG15["SDG 15"]
SDG16["SDG 16"]
SDG17["SDG 17"]
end
Ch2L4 --> SDG1
Ch2L4 --> SDG2
Ch2L4 --> SDG3
Ch2L4 --> SDG4
Ch2L4 --> SDG5
Ch2L4 --> SDG6
Ch2L4 --> SDG7
Ch2L4 --> SDG8
Ch2L4 --> SDG9
Ch2L4 --> SDG10
Ch2L4 --> SDG11
Ch2L4 --> SDG12
Ch2L4 --> SDG13
Ch2L4 --> SDG14
Ch2L4 --> SDG15
Ch2L4 --> SDG16
Ch2L4 --> SDG17
Chapter 3
Show the code
ch3_hits <- readRDS(file.path(params$chapter_3, "st_hits.rds"))
ch3_counts <- setNames(ch3_hits$count, rownames(ch3_hits))
ch3_hits |>
dplyr::mutate(count = format_count(count)) |>
knitr::kable(
col.names = c("Count"),
align = "r"
)| Count | |
|---|---|
| Set 1 | 1,947 |
| Set 2 | 11,292 |
| Set 3 | 658 |
| Set 4 | 1,318 |
| Set 5 | 560 |
| Set 6 | 439 |
| Set 7 | 694 |
| Set 8 | 26 |
| Set 9 | 0 |
| Set 10 | 26 |
Show the code
render_mermaid(
file.path("figures", "chapter3.mmd"),
c(
C3_1 = format_count(ch3_counts[["Set 1"]]),
C3_2 = format_count(ch3_counts[["Set 2"]]),
C3_3 = format_count(ch3_counts[["Set 3"]]),
C3_4 = format_count(ch3_counts[["Set 4"]]),
C3_5 = format_count(ch3_counts[["Set 5"]]),
C3_6 = format_count(ch3_counts[["Set 6"]]),
C3_7 = format_count(ch3_counts[["Set 7"]]),
C3_8 = format_count(ch3_counts[["Set 8"]]),
C3_9 = format_count(ch3_counts[["Set 9"]]),
C3_10 = format_count(ch3_counts[["Set 10"]])
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch3["<u><span style='color:#1a0dab;'>chapter_3.yaml<br/>Level 2 refinements</span></u>"]
click Ch3 "./input/search_terms/chapter_3.yaml" "Open chapter_3.yaml"
subgraph Chapter3Sets["Chapter 3 searches"]
direction TB
C3_1["Set 1:<br/>Protected/OECM + NBSAP + cases<br/>+ spatial prioritization + regional scales<br/>(n = 1,947)"]
C3_2["Set 2:<br/>Restoration types + inclusivity & ILK<br/>(n = 11,292)"]
C3_3["Set 3:<br/>Restoration planning + connectivity + resilience<br/>(n = 658)"]
C3_4["Set 4:<br/>Systematic conservation planning / gap analysis<br/>(n = 1,318)"]
C3_5["Set 5:<br/>Protected area & connectivity planning<br/>(n = 560)"]
C3_6["Set 6:<br/>Landscape/species/corridor networks<br/>(n = 439)"]
C3_7["Set 7:<br/>Conservation planning + ecosystem services<br/>(n = 694)"]
C3_8["Set 8:<br/>Participatory conservation mapping<br/>(n = 26)"]
C3_9["Set 9:<br/>Conservation effectiveness + spatial planning<br/>(n = 0)"]
C3_10["Set 10:<br/>Adaptive management under global change drivers<br/>(n = 26)"]
end
Ch3 --> C3_1
Ch3 --> C3_2
Ch3 --> C3_3
Ch3 --> C3_4
Ch3 --> C3_5
Ch3 --> C3_6
Ch3 --> C3_7
Ch3 --> C3_8
Ch3 --> C3_9
Ch3 --> C3_10
Chapter 4
Show the code
ch4_hits <- readRDS(file.path(params$chapter_4, "st_hits.rds"))
ch4_counts <- setNames(ch4_hits$count, rownames(ch4_hits))
ch4_hits |>
dplyr::mutate(count = format_count(count)) |>
knitr::kable(
col.names = c("Count"),
align = "r"
)| Count | |
|---|---|
| Set 1 | 1,381 |
| Set 2 | 242 |
| Set 3 | 6,107 |
| Set 4 | 28,416 |
| Set 5 | 373 |
| Set 6 | 2,619 |
| Set 7 | 0 |
| Set 8 | 82,136 |
Show the code
render_mermaid(
file.path("figures", "chapter4.mmd"),
c(
C4_1 = format_count(ch4_counts[["Set 1"]]),
C4_2 = format_count(ch4_counts[["Set 2"]]),
C4_3 = format_count(ch4_counts[["Set 3"]]),
C4_4 = format_count(ch4_counts[["Set 4"]]),
C4_5 = format_count(ch4_counts[["Set 5"]]),
C4_6 = format_count(ch4_counts[["Set 6"]]),
C4_7 = format_count(ch4_counts[["Set 7"]]),
C4_8 = format_count(ch4_counts[["Set 8"]])
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch4["<u><span style='color:#1a0dab;'>chapter_4.yaml<br/>Level 2 refinements</span></u>"]
click Ch4 "./input/search_terms/chapter_4.yaml" "Open chapter_4.yaml"
subgraph Chapter4Sets["Chapter 4 searches"]
direction TB
C4_1["Set 1:<br/>Connectivity review articles<br/>(n = 1,381)"]
C4_2["Set 2:<br/>Connectivity benefits vs risks<br/>+ ecosystem services<br/>(n = 242)"]
C4_3["Set 3:<br/>Structural vs functional connectivity<br/>(n = 6,107)"]
C4_4["Set 4:<br/>Connectivity modelling toolkits<br/>(n = 28,416)"]
C4_5["Set 5:<br/>Connectivity indicators & metrics<br/>(n = 373)"]
C4_6["Set 6:<br/>Policy & governance integration<br/>(n = 2,619)"]
C4_7["Set 7:<br/>Multilevel / transboundary governance<br/>+ IPLC inclusion + land tenure<br/>(n = 0)"]
C4_8["Set 8:<br/>Movement ecology<br/>(dispersal / migration / permeability)<br/>(n = 82,136)"]
end
Ch4 --> C4_1
Ch4 --> C4_2
Ch4 --> C4_3
Ch4 --> C4_4
Ch4 --> C4_5
Ch4 --> C4_6
Ch4 --> C4_7
Ch4 --> C4_8
Chapter 5
Show the code
ch5_hits <- readRDS(file.path(params$chapter_5, "st_hits.rds"))
ch5_counts <- lapply(ch5_hits, function(df) {
setNames(df$count, rownames(df))
})
do.call(
rbind,
lapply(names(ch5_hits), function(sect_nm) {
df <- ch5_hits[[sect_nm]]
df$section <- sect_nm
df$set <- rownames(df)
rownames(df) <- NULL
df[,
c("section", "set", setdiff(names(df), c("section", "set"))),
drop = FALSE
]
})
) |>
dplyr::mutate(
count = format_count(count)
) |>
knitr::kable(
col.names = c("Section", "Set", "Count"),
align = c("c", "c", "r")
)| Section | Set | Count |
|---|---|---|
| Sections 1 and 2 | Set 1 | 191,656 |
| Sections 1 and 2 | Set 2 | 59,140 |
| Sections 1 and 2 | Set 3 | 56,844 |
| Sections 1 and 2 | Set 4 | 384,213 |
| Sections 1 and 2 | Set 5 | 262,209 |
| Section 3 | Set 1 | 2,784 |
| Section 3 | Set 2 | 14,829 |
| Section 3 | Set 3 | 113 |
| Section 4 | Set 1 | 58,886 |
| Section 4 | Set 2 | 20,753 |
| Section 4 | Set 3 | 13,694 |
| Section 5 | Set 1 | 14,967 |
| Section 5 | Set 2 | 77,271 |
| Section 5 | Set 3 | 48,732 |
| Section 5 | Set 4 | 26,570 |
| Section 6 | Set 1 | 166 |
| Section 6 | Set 2 | 4,055 |
| Section 6 | Set 3 | 2,908 |
| Section 6 | Set 4 | 2,389 |
| Cross-cutting sets | Set 1 | 43,582 |
| Cross-cutting sets | Set 2 | 216,655 |
Show the code
fmt_ch5 <- function(section, set) {
format_count(ch5_counts[[section]][[set]])
}
render_mermaid(
file.path("figures", "chapter5.mmd"),
c(
C5_1 = fmt_ch5("Sections 1 and 2", "Set 1"),
C5_2 = fmt_ch5("Sections 1 and 2", "Set 2"),
C5_3 = fmt_ch5("Sections 1 and 2", "Set 3"),
C5_4 = fmt_ch5("Sections 1 and 2", "Set 4"),
C5_5 = fmt_ch5("Sections 1 and 2", "Set 5"),
C5_3a = fmt_ch5("Section 3", "Set 1"),
C5_3b = fmt_ch5("Section 3", "Set 2"),
C5_3c = fmt_ch5("Section 3", "Set 3"),
C5_4a = fmt_ch5("Section 4", "Set 1"),
C5_4b = fmt_ch5("Section 4", "Set 2"),
C5_4c = fmt_ch5("Section 4", "Set 3"),
C5_5a = fmt_ch5("Section 5", "Set 1"),
C5_5b = fmt_ch5("Section 5", "Set 2"),
C5_5c = fmt_ch5("Section 5", "Set 3"),
C5_5d = fmt_ch5("Section 5", "Set 4"),
C5_6a = fmt_ch5("Section 6", "Set 1"),
C5_6b = fmt_ch5("Section 6", "Set 2"),
C5_6c = fmt_ch5("Section 6", "Set 3"),
C5_6d = fmt_ch5("Section 6", "Set 4"),
CC1 = fmt_ch5("Cross-cutting sets", "Set 1"),
CC2 = fmt_ch5("Cross-cutting sets", "Set 2")
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch5L2["<u><span style='color:#1a0dab;'>chapter_5.yaml<br/>Level 2 foresight framing</span></u>"]
click Ch5L2 "./input/search_terms/chapter_5.yaml" "Open chapter_5.yaml"
subgraph L2Sets["Section 5.1–5.2 searches"]
direction TB
C5_1["Set 1:<br/>Future + project*/predict*/scenario<br/>(n = 191,656)"]
C5_2["Set 2:<br/>Future + pathway*/narrative*/vision*<br/>(n = 59,140)"]
C5_3["Set 3:<br/>Future-proof*/anticipat*/scenario planning<br/>(n = 56,844)"]
C5_4["Set 4:<br/>Foresight*/backcasting/simulat*/trend*<br/>(n = 384,213)"]
C5_5["Set 5:<br/>Model* AND scenario<br/>(n = 262,209)"]
end
Ch5L2 --> C5_1
Ch5L2 --> C5_2
Ch5L2 --> C5_3
Ch5L2 --> C5_4
Ch5L2 --> C5_5
subgraph L3Sets["Section 5.3 searches"]
direction TB
C5_3a["Set 1:<br/>Drivers of change<br/>(n = 2,784)"]
C5_3b["Set 2:<br/>Driver modelling approaches<br/>(n = 14,829)"]
C5_3c["Set 3:<br/>Driver gaps<br/>(n = 113)"]
end
Ch5L2 --> C5_3a
Ch5L2 --> C5_3b
Ch5L2 --> C5_3c
subgraph L4Sets["Section 5.4 searches"]
direction TB
C5_4a["Set 1:<br/>Interactions (synergy/trade-off/nexus)<br/>(n = 58,886)"]
C5_4b["Set 2:<br/>Response options (integrated planning / NbS)<br/>(n = 20,753)"]
C5_4c["Set 3:<br/>Cross-scale synergy & trade-off terms<br/>(n = 13,694)"]
end
Ch5L2 --> C5_4a
Ch5L2 --> C5_4b
Ch5L2 --> C5_4c
subgraph L5Sets["Section 5.5 searches"]
direction TB
C5_5a["Set 1:<br/>Adaptive / transformative management<br/>(n = 14,967)"]
C5_5b["Set 2:<br/>Uncertainty quantification<br/>(n = 77,271)"]
C5_5c["Set 3:<br/>Tipping points & thresholds<br/>(n = 48,732)"]
C5_5d["Set 4:<br/>Cascading risks & precaution<br/>(n = 26,570)"]
end
Ch5L2 --> C5_5a
Ch5L2 --> C5_5b
Ch5L2 --> C5_5c
Ch5L2 --> C5_5d
subgraph L6Sets["Section 5.6 searches"]
direction TB
C5_6a["Set 1:<br/>Science-policy-practice pathways<br/>(n = 166)"]
C5_6b["Set 2:<br/>ILK integration & community planning<br/>(n = 4,055)"]
C5_6c["Set 3:<br/>Enabling factors & coordination<br/>(n = 2,908)"]
C5_6d["Set 4:<br/>Shocks, surprises, uncertainties<br/>(n = 2,389)"]
end
Ch5L2 --> C5_6a
Ch5L2 --> C5_6b
Ch5L2 --> C5_6c
Ch5L2 --> C5_6d
subgraph CCSets["Cross-cutting searches"]
direction TB
CC1["Set 1:<br/>Scales & telecoupling<br/>(n = 43,582)"]
CC2["Set 2:<br/>Co-production & inclusion<br/>(n = 216,655)"]
end
Ch5L2 --> CC1
Ch5L2 --> CC2
Chapter 6
Show the code
ch6_hits <- readRDS(file.path(params$chapter_6, "st_hits.rds"))
ch6_counts <- setNames(ch6_hits$count, rownames(ch6_hits))
ch6_hits |>
dplyr::mutate(count = format_count(count)) |>
knitr::kable(
col.names = c("Count"),
align = "r"
)| Count | |
|---|---|
| Set 1 | 12,026 |
| Set 2 | 1,442 |
| Set 3 | 79,048 |
| Set 4 | 157,749 |
| Set 5 | 3,560 |
| Set 6 | 50,361 |
| Set 7 | 234,056 |
| Set 8.1 | 295,693 |
| Set 8.2 | 17,742 |
| Set 9 | 58,537 |
| Set 10 | 18,407 |
Show the code
render_mermaid(
file.path("figures", "chapter6.mmd"),
c(
C6_1 = format_count(ch6_counts[["Set 1"]]),
C6_2 = format_count(ch6_counts[["Set 2"]]),
C6_3 = format_count(ch6_counts[["Set 3"]]),
C6_4 = format_count(ch6_counts[["Set 4"]]),
C6_5 = format_count(ch6_counts[["Set 5"]]),
C6_6 = format_count(ch6_counts[["Set 6"]]),
C6_7 = format_count(ch6_counts[["Set 7"]]),
C6_8 = format_count(sum(ch6_counts[c("Set 8.1", "Set 8.2")], na.rm = TRUE)),
C6_9 = format_count(ch6_counts[["Set 9"]]),
C6_10 = format_count(ch6_counts[["Set 10"]])
)
)%%{init: {'flowchart': {'htmlLabels': true}}}%%
flowchart LR
Start([SPC Corpus]) --> Ch6["<u><span style='color:#1a0dab;'>chapter_6.yaml<br/>Level 2 refinements</span></u>"]
click Ch6 "./input/search_terms/chapter_6.yaml" "Open chapter_6.yaml"
subgraph Chapter6Sets["Chapter 6 searches"]
direction TB
C6_1["Set 1:<br/>Institutional & governance structures<br/>(n = 12,026)"]
C6_2["Set 2:<br/>Political & strategic leadership<br/>(n = 1,442)"]
C6_3["Set 3:<br/>Socio-cultural & stakeholder engagement<br/>(n = 79,048)"]
C6_4["Set 4:<br/>Collaboration, trust & networks<br/>(n = 157,749)"]
C6_5["Set 5:<br/>Financial & economic mechanisms<br/>(n = 3,560)"]
C6_6["Set 6:<br/>Legal & policy frameworks<br/>(n = 50,361)"]
C6_7["Set 7:<br/>Human & institutional capacity<br/>(n = 234,056)"]
C6_8["Set 8:<br/>Data, knowledge & decision support<br/>(n = 313,435)"]
C6_9["Set 9:<br/>Ecological & spatial planning tools<br/>(n = 58,537)"]
C6_10["Set 10:<br/>Cross-cutting process enablers<br/>(n = 18,407)"]
end
Ch6 --> C6_1
Ch6 --> C6_2
Ch6 --> C6_3
Ch6 --> C6_4
Ch6 --> C6_5
Ch6 --> C6_6
Ch6 --> C6_7
Ch6 --> C6_8
Ch6 --> C6_9
Ch6 --> C6_10
Ch6R2["<u><span style='color:#1a0dab;'>chapter_6_r2.yaml<br/>Optional Level 3 filter</span></u>"]
Chapter6Sets --> Ch6R2
click Ch6R2 "./input/search_terms/chapter_6_r2.yaml" "Open chapter_6_r2.yaml"
subgraph Chapter6Case["Chapter 6 searches"]
R2["Case-study keywords<br/>(case stud*, example*, initiative*, etc.)"]
end
Ch6R2 --> R2
Reuse
Citation
@report{krug,
author = {Krug, Rainer M. and Bishop, Gabriella and Villasante,
Sebastian},
title = {Spatial {Planning} and {Connectivity} {Corpus} - {Technical}
{Background} {Report}},
doi = {10.5281/zenodo.XXXXX},
langid = {en},
abstract = {To Be added}
}