diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..daa0a98 --- /dev/null +++ b/.env.example @@ -0,0 +1,28 @@ +# API Keys for JSON-LD Generation Script +# Copy this file to .env and fill in your actual API keys +# The .env file is gitignored and will not be committed + +# Google Gemini API Key (default service - uses URL Context Tool to browse URLs directly) +# Get your key from: https://aistudio.google.com/apikey +# Free tier available with .edu email +# Default model: gemini-2.0-flash +GEMINI_API_KEY=your-gemini-api-key-here + +# NRP (National Research Platform) API Key +# Get your key from: https://nrp.ai/documentation/userdocs/ai/llm-managed/ +# Available NRP models: qwen3, llama3-sdsc, gpt-oss, gorilla, olmo, gemma3, kimi, etc. +# Default model: qwen3 +# Note: NRP fetches HTML and extracts text before sending to AI +NRP_API_KEY=your-nrp-api-key-here + +# OpenAI/ChatGPT API Key +# Get your key from: https://platform.openai.com/api-keys +# Default model: gpt-4o +# Note: OpenAI fetches HTML and extracts text before sending to AI +OPENAI_API_KEY=your-openai-api-key-here + +# Anthropic (Claude) API Key +# Get your key from: https://console.anthropic.com/ +# Default model: claude-3-5-sonnet-20241022 +# Note: Anthropic fetches HTML and extracts text before sending to AI +ANTHROPIC_API_KEY=your-anthropic-api-key-here diff --git a/.github/workflows/sitemap_resources.yaml b/.github/workflows/sitemap_resources.yaml new file mode 100644 index 0000000..8c13d79 --- /dev/null +++ b/.github/workflows/sitemap_resources.yaml @@ -0,0 +1,91 @@ +name: Generate XML sitemap for JSON-LD resources + +on: + push: + branches: + - main + - master + +permissions: + contents: write + +jobs: + sitemap_job: + runs-on: ubuntu-latest + name: Generate sitemap for JSON-LD files + steps: + - uses: actions/setup-python@v2 + with: + python-version: 3.x + - run: pip install mkdocs + - run: pip install mkdocs-schema-reader + - name: Checkout the repo + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + # Generate single sitemap for all JSON-LD files in data and collection directories + - name: Generate sitemap for all JSON-LD resources + id: sitemap_all + uses: cicirello/generate-sitemap@v1 + with: + base-url-path: https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/${{ github.ref_name }}/data/objects/summoned + # https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/gh-pages + path-to-root: data/objects/summoned + include-html: false + include-pdf: false + additional-extensions: jsonld json xml + exclude-paths: .git .github docs scripts crawler prompts .vscode + - name: Output sitemap stats + run: | + echo "sitemap-path = ${{ steps.sitemap_all.outputs.sitemap-path }}" + echo "url-count = ${{ steps.sitemap_all.outputs.url-count }}" + echo "excluded-count = ${{ steps.sitemap_all.outputs.excluded-count }}" + + - name: Generate sitemap for just AI Generated JSON-LD resources + id: sitemap_generated + uses: cicirello/generate-sitemap@v1 + with: + base-url-path: https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/${{ github.ref_name }}/data/objects/summoned/generated + path-to-root: data/objects/summoned/generated + include-html: false + include-pdf: false + additional-extensions: jsonld json xml + exclude-paths: + .git .github docs scripts crawler prompts .vscode + + - name: Commit and push sitemaps to branch + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + ls -la data/objects/summoned/sitemap.xml data/objects/summoned/generated/sitemap.xml 2>/dev/null || true + git add data/objects/summoned/sitemap.xml data/objects/summoned/generated/sitemap.xml + git status + if ! git diff --staged --quiet; then + git commit -m "chore: update JSON-LD sitemaps" + git fetch origin ${{ github.ref_name }} + git rebase origin/${{ github.ref_name }} + git push origin HEAD:${{ github.ref_name }} + fi + +### WE MIGHT WANT TO DO INDIVIDUAL SITEMAPS +# - name: Generate sitemap for all JSON-LD resources +# id: sitemap_glim +# uses: cicirello/generate-sitemap@v1 +# with: +# base-url-path: https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/${{ github.ref_name }}/data/objects/summoned/glim +# path-to-root: data/objects/summoned/glim +# include-html: false +# include-pdf: false +# additional-extensions: jsonld json xml +# exclude-paths: +# .git .github docs scripts crawler prompts .vscode + +####### MKDOCS + - run: mkdocs build --config-file mkdocs.yaml + - name: push to gh pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: . + clean: false \ No newline at end of file diff --git a/.github/workflows/validate_with_dataset_schema.yaml b/.github/workflows/validate_with_dataset_schema.yaml new file mode 100644 index 0000000..309a9df --- /dev/null +++ b/.github/workflows/validate_with_dataset_schema.yaml @@ -0,0 +1,148 @@ +name: Validate JSON-LD files with Schema.org Dataset schema + +on: + push: + branches-ignore: [ 'gh-pages' ] + pull_request: + branches-ignore: [ 'gh-pages' ] + +jobs: + validate-jsonld-generated: + runs-on: ubuntu-latest + name: Validate generated JSON-LD files + steps: + - name: Checkout the repo + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Find and validate generated JSON-LD files + run: | + python scripts/validate_jsonld_batch.py data/objects/summoned/generated + + validate-jsonld-summoned: + runs-on: ubuntu-latest + name: Validate summoned JSON-LD files + steps: + - name: Checkout the repo + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Find and validate summoned JSON-LD files + run: | + python - << 'RELAXED_VALIDATE' + import json, sys + from pathlib import Path + dir_ = Path("data/objects/summoned") + if not dir_.exists(): + print("Directory not found, skipping."); sys.exit(0) + files = [f for f in dir_.rglob("*.jsonld") if "generated" not in str(f)] + if not files: + print("No JSON-LD files found."); sys.exit(0) + errs = [] + for f in sorted(files): + try: + with open(f) as fp: data = json.load(fp) + except Exception as e: + errs.append(f"{f}: {e}"); continue + for k in ["@context", "@type", "name"]: + if k not in data: errs.append(f"{f}: missing {k}") + if "spatialCoverage" in data and isinstance(data["spatialCoverage"], dict): + geo = data["spatialCoverage"].get("geo", {}) + if isinstance(geo, dict) and "box" in geo and isinstance(geo["box"], str): + parts = geo["box"].strip().split() + if len(parts) == 4: + try: + a,b,c,d = float(parts[0]),float(parts[1]),float(parts[2]),float(parts[3]) + if (-90<=b<=90 and -90<=d<=90): west,south,east,north = a,b,c,d + else: south,west,north,east = a,b,c,d + if not (-90<=south<=90 and -90<=north<=90 and -180<=west<=180 and -180<=east<=180): + errs.append(f"{f}: box out of range") + except ValueError: errs.append(f"{f}: invalid box numbers") + elif len(parts) == 2: + try: + ws, en = parts[0].split(","), parts[1].split(",") + if len(ws)==2 and len(en)==2: + west,south = float(ws[0]),float(ws[1]) + east,north = float(en[0]),float(en[1]) + if not (-90<=south<=90 and -90<=north<=90 and -180<=west<=180 and -180<=east<=180): + errs.append(f"{f}: box out of range") + except ValueError: errs.append(f"{f}: invalid box format") + else: errs.append(f"{f}: box expected 2 or 4 numbers") + if errs: + for e in errs: print(e) + sys.exit(1) + print(f"All {len(files)} summoned JSON-LD file(s) validated.") + RELAXED_VALIDATE + + validate-jsonld-all: + runs-on: ubuntu-latest + name: Validate all JSON-LD files + steps: + - name: Checkout the repo + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Find and validate all JSON-LD files + run: | + python - << 'RELAXED_VALIDATE_ALL' + import json, sys + from pathlib import Path + dir_ = Path("data") + if not dir_.exists(): + print("Directory not found, skipping."); sys.exit(0) + files = list(dir_.rglob("*.jsonld")) + if not files: + print("No JSON-LD files found."); sys.exit(0) + errs = [] + for f in sorted(files): + try: + with open(f) as fp: data = json.load(fp) + except Exception as e: + errs.append(f"{f}: {e}"); continue + for k in ["@context", "@type", "name"]: + if k not in data: errs.append(f"{f}: missing {k}") + if "spatialCoverage" in data and isinstance(data["spatialCoverage"], dict): + geo = data["spatialCoverage"].get("geo", {}) + if isinstance(geo, dict) and "box" in geo and isinstance(geo["box"], str): + parts = geo["box"].strip().split() + if len(parts) == 4: + try: + a,b,c,d = float(parts[0]),float(parts[1]),float(parts[2]),float(parts[3]) + if (-90<=b<=90 and -90<=d<=90): west,south,east,north = a,b,c,d + else: south,west,north,east = a,b,c,d + if not (-90<=south<=90 and -90<=north<=90 and -180<=west<=180 and -180<=east<=180): + errs.append(f"{f}: box out of range") + except ValueError: errs.append(f"{f}: invalid box numbers") + elif len(parts) == 2: + try: + ws, en = parts[0].split(","), parts[1].split(",") + if len(ws)==2 and len(en)==2: + west,south = float(ws[0]),float(ws[1]) + east,north = float(en[0]),float(en[1]) + if not (-90<=south<=90 and -90<=north<=90 and -180<=west<=180 and -180<=east<=180): + errs.append(f"{f}: box out of range") + except ValueError: errs.append(f"{f}: invalid box format") + else: errs.append(f"{f}: box expected 2 or 4 numbers") + if errs: + for e in errs: print(e) + sys.exit(1) + print(f"All {len(files)} JSON-LD file(s) validated.") + RELAXED_VALIDATE_ALL diff --git a/.gitignore b/.gitignore index 485dee6..c569d3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,21 @@ .idea + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +*.egg-info/ +dist/ +build/ + +# Environment variables +.env +.env.local + +# CSV data files (downloaded from Google Sheets) +datasets.csv + +# Generated JSON-LD files +#data/objects/summoned/generated/ diff --git a/README.md b/README.md index 44c6c6b..28729ce 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,7 @@ Documentation, files and code related to the exposure of resource on the web for indexing. +Sitemaps (generated by [sitemap_resources.yaml](.github/workflows/sitemap_resources.yaml) on push to `master` / `main` / feature branches): + +- **All JSON-LD under data/objects/summoned:** [GitHub Pages](https://earthcube.github.io/communityCollections/data/objects/summoned/sitemap.xml) · [Raw (e.g. master)](https://raw.githubusercontent.com/earthcube/communityCollections/master/data/objects/summoned/sitemap.xml) +- **AI-generated JSON-LD only:** [GitHub Pages](https://earthcube.github.io/communityCollections/data/objects/summoned/generated/sitemap.xml) · [Raw (e.g. master)](https://raw.githubusercontent.com/earthcube/communityCollections/master/data/objects/summoned/generated/sitemap.xml) \ No newline at end of file diff --git a/data/objects/summoned/generated/CHELSA/chelsa_bioclim.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_bioclim.jsonld new file mode 100644 index 0000000..31765f0 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_bioclim.jsonld @@ -0,0 +1,897 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa_bioclim#dataset", + "name": "CHELSA-bioclim (V2.1)", + "description": "CHELSA-bioclim is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It consists of bioclimatic variables and related predictors used in ecological and environmental analyses.", + "url": "https://www.chelsa-climate.org/datasets/chelsa_bioclim", + "version": "2.1", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "bioclim", + "bioclimatic variables", + "ecology", + "species distribution modeling", + "climate predictors" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Mean Annual Near-Surface Air Temperature", + "alternateName": "bio01", + "unitText": "°C", + "description": "Mean annual temperature calculated as the average of mean monthly temperatures over the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Diurnal Near-Surface Air Temperature Range", + "alternateName": "bio02", + "unitText": "°C", + "description": "Mean diurnal temperature range computed as the average of monthly daily maximum minus daily minimum near-surface air temperature", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Isothermality", + "alternateName": "bio03", + "unitText": "°C", + "description": "Isothermality: 100 × bio02 ÷ bio07; compares day-night variability to annual temperature range", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Temperature Seasonality", + "alternateName": "bio04", + "unitText": "°C/100", + "description": "Temperature seasonality given by the standard deviation of mean monthly temperatures", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Maximum Near-Surface Air Temperature of the Warmest Month", + "alternateName": "bio05", + "unitText": "°C", + "description": "Highest monthly mean of daily maximum temperatures across the year; indicates peak thermal conditions", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Minimum Near-Surface Air Temperature of the Coldest Month", + "alternateName": "bio06", + "unitText": "°C", + "description": "Lowest monthly mean of daily minimum temperatures across the year; characterizes winter cold intensity", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Annual Daily Mean Near-Surface Air Temperature Range", + "alternateName": "bio07", + "unitText": "°C", + "description": "Annual temperature range calculated as bio05 minus bio06; measures amplitude between warmest and coldest months", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Near-Surface Air Temperature of the Wettest Quarter", + "alternateName": "bio08", + "unitText": "°C", + "description": "Average monthly mean temperature over the wettest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Near-Surface Air Temperature of the Driest Quarter", + "alternateName": "bio09", + "unitText": "°C", + "description": "Average monthly mean temperature over the driest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Mean Near-Surface Air Temperature of the Warmest Quarter", + "alternateName": "bio10", + "unitText": "°C", + "description": "Average monthly mean temperature over the warmest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Mean Near-Surface Air Temperature of the Coldest Quarter", + "alternateName": "bio11", + "unitText": "°C", + "description": "Average monthly mean temperature over the coldest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Annual Precipitation", + "alternateName": "bio12", + "unitText": "kg m-2 year-1", + "description": "Sum of monthly precipitation totals across the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation of the Wettest Month", + "alternateName": "bio13", + "unitText": "kg m-2 month-1", + "description": "Maximum monthly precipitation total", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation of the Driest Month", + "alternateName": "bio14", + "unitText": "kg m-2 month-1", + "description": "Minimum monthly precipitation total", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation Seasonality", + "alternateName": "bio15", + "unitText": "kg m-2", + "description": "Coefficient of variation: 100 × standard deviation ÷ mean of monthly precipitation totals", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Wettest Quarter", + "alternateName": "bio16", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the wettest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Driest Quarter", + "alternateName": "bio17", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the driest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Warmest Quarter", + "alternateName": "bio18", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the warmest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Coldest Quarter", + "alternateName": "bio19", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the coldest three-month period of the year", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Frost Change Frequency", + "alternateName": "fcf", + "unitText": "count", + "description": "Number of freeze-thaw transitions per year.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "First Day of the Growing Season TREELIM", + "alternateName": "fgd", + "unitText": "julian day", + "description": "Julian day marking the first occurrence of growing season conditions.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Growing Degree Days Heat Sum above 0 °C", + "alternateName": "gdd0", + "unitText": "°C", + "description": "Sum of daily mean temperatures above 0 °C accumulated over the year.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Growing Degree Days Heat Sum above 10 °C", + "alternateName": "gdd10", + "unitText": "°C", + "description": "Sum of daily mean temperatures above 10 °C accumulated over the year.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Growing Degree Days Heat Sum above 5 °C", + "alternateName": "gdd5", + "unitText": "°C", + "description": "Sum of daily mean temperatures above 5 °C accumulated over the year.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "First Growing Degree Day above 10 °C", + "alternateName": "gdgfgd10", + "unitText": "julian day", + "description": "Julian day of the first occurrence of a daily mean temperature above 10 °C.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "First Growing Degree Day above 5 °C", + "alternateName": "gdgfgd5", + "unitText": "julian day", + "description": "Julian day of the first occurrence of a daily mean temperature above 5 °C.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Growing Season Length", + "alternateName": "gsl", + "unitText": "days", + "description": "Number of days between the first and last occurrence of growing season conditions.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Accumulated Precipitation Amount on Growing Season Days", + "alternateName": "gsp", + "unitText": "kg m-2 gsl-1", + "description": "Total precipitation accumulated during the growing season period.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Temperature of Growing Season Days", + "alternateName": "gst", + "unitText": "°C", + "description": "Average daily mean temperature over all growing season days.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Köppen-Geiger Climate Classification", + "alternateName": "kg0", + "unitText": "category", + "description": "Köppen-Geiger climate classification.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Köppen-Geiger Climate Classification without As and Aw Differentiation", + "alternateName": "kg1", + "unitText": "category", + "description": "Köppen-Geiger climate classification without As and Aw differentiation.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Köppen-Geiger Climate Classification after Peel et al. 2007", + "alternateName": "kg2", + "unitText": "category", + "description": "Köppen-Geiger climate classification after Peel et al. 2007.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Climate Classification after Wissmann 1939", + "alternateName": "kg3", + "unitText": "category", + "description": "Climate classification after Wissmann 1939.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Climate Classification after Thornthwaite 1931", + "alternateName": "kg4", + "unitText": "category", + "description": "Climate classification after Thornthwaite 1931.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Climate Classification after Troll-Pfaffen", + "alternateName": "kg5", + "unitText": "category", + "description": "Climate classification after Troll-Pfaffen.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Last Day of the Growing Season TREELIM", + "alternateName": "lgd", + "unitText": "julian day", + "description": "Julian day of the last occurrence of growing season conditions.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Number of Growing Degree Days above 0 °C", + "alternateName": "ngd0", + "unitText": "number of days", + "description": "Total number of days in a year with mean daily temperature above 0 °C.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Number of Growing Degree Days above 10 °C", + "alternateName": "ngd10", + "unitText": "number of days", + "description": "Total number of days in a year with mean daily temperature above 10 °C.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Number of Growing Degree Days above 5 °C", + "alternateName": "ngd5", + "unitText": "number of days", + "description": "Total number of days in a year with mean daily temperature above 5 °C.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Net Primary Production on Land as Carbon Mass Flux", + "alternateName": "npp", + "unitText": "g C m-2 yr-1", + "description": "Net primary production on land expressed as carbon mass flux.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Snow Cover Days", + "alternateName": "scd", + "unitText": "days", + "description": "Number of days per year with snow cover present at the surface.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Snow Water Equivalent", + "alternateName": "swe", + "unitText": "kg m-2 year-1", + "description": "Total water equivalent of snowpack accumulated over the year.", + "temporalCoverage": "1981-2010/1971-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-bioclim downloads (COG)", + "description": "Download portal for CHELSA bioclimatic variables.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fglobal%2Fbioclim%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Global climate-related predictors at kilometer resolution for the past and future", + "author": [ + { + "@type": "Person", + "name": "P. Brun" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "C. Hari" + }, + { + "@type": "Person", + "name": "L. Pellissier" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "datePublished": "2022", + "volumeNumber": "14", + "issueNumber": "12", + "pagination": "5573-5603", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-14-5573-2022" + }, + "sameAs": "https://doi.org/10.5194/essd-14-5573-2022" + }, + { + "@type": "Dataset", + "name": "CHELSA-BIOCLIM+ A novel set of global climate-related predictors at kilometre-resolution", + "author": [ + { + "@type": "Person", + "name": "P. Brun" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "C. Hari" + }, + { + "@type": "Person", + "name": "L. Pellissier" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2022", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.332" + }, + "sameAs": "https://doi.org/10.16904/envidat.332" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Bioclimatic predictors" + }, + { + "@type": "Thing", + "name": "Biodiversity and ecology" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_canaryclim_climatologies.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_canaryclim_climatologies.jsonld new file mode 100644 index 0000000..b898e6f --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_canaryclim_climatologies.jsonld @@ -0,0 +1,213 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/canary-clim-canaries#dataset", + "name": "CHELSACanaryClim-climatologies (Canary Islands) (V1.0)", + "description": "CHELSACanaryClim-climatologies is a very-high-resolution climate dataset generated with the CHELSACanaryClim downscaling model. It consists of monthly climatologies of air temperature and precipitation for the Canary Islands.", + "url": "https://www.chelsa-climate.org/datasets/canary-clim-canaries", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "Canary Islands", + "very high resolution", + "climatologies", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1979-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Canary Islands" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Canary Islands" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Canary Islands" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Canary Islands" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSACanaryClim-climatologies downloads (COG)", + "description": "Download portal for CanaryClim climatologies.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.zhdk.cloud.switch.ch%2Fchelsa01%2F&prefix=chelsa_canaryclim%2Fcanaries%2Fclimatologies%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Spatial resolution impacts projected plant responses to climate change on topographically complex islands", + "author": [ + { + "@type": "Person", + "name": "J. Patiño" + }, + { + "@type": "Person", + "name": "F. Collart" + }, + { + "@type": "Person", + "name": "A. Vanderpoorten" + }, + { + "@type": "Person", + "name": "J. L. Martin-Esquivel" + }, + { + "@type": "Person", + "name": "A. Naranjo-Cigala" + }, + { + "@type": "Person", + "name": "S. Mirolo" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "datePublished": "2023", + "isPartOf": { + "@type": "Periodical", + "name": "Diversity and Distributions" + }, + "volumeNumber": "29", + "issueNumber": "10", + "pagination": "1245-1262", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1111/ddi.13757" + }, + "sameAs": "https://doi.org/10.1111/ddi.13757" + }, + { + "@type": "Dataset", + "name": "CHELSACanaryClim-climatologies", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "F. Collart" + }, + { + "@type": "Person", + "name": "A. Vanderpoorten" + }, + { + "@type": "Person", + "name": "J. L. Martin-Esquivel" + }, + { + "@type": "Person", + "name": "A. Naranjo-Cigala" + }, + { + "@type": "Person", + "name": "S. Mirolo" + }, + { + "@type": "Person", + "name": "J. Patiño" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.692" + }, + "sameAs": "https://doi.org/10.16904/envidat.692" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Island climatology" + }, + { + "@type": "Thing", + "name": "Downscaled regional climate" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_cerra_daily.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_cerra_daily.jsonld new file mode 100644 index 0000000..a4e4f81 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_cerra_daily.jsonld @@ -0,0 +1,149 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsacerra-daily#dataset", + "name": "CHELSAcerra-daily (Europe) (V1.0)", + "description": "CHELSAcerra-daily is a high-resolution climate dataset for air temperatures generated with the CHELSA downscaling model using the Copernicus European Regional ReAnalysis (CERRA) for Europe.", + "url": "https://www.chelsa-climate.org/datasets/chelsacerra-daily", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "CERRA", + "Europe", + "downscaling", + "daily temperature", + "regional reanalysis" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1985-01-01/2015-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Europe" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSAcerra-daily downloads (portal)", + "description": "Download portal linked from the CHELSA catalog entry for CHELSAcerra-daily.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Feurope%2Fdaily%2F", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "CHELSAcerra-daily", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "J. Janzing" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.703" + }, + "sameAs": "https://doi.org/10.16904/envidat.703" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Downscaled regional reanalysis (Europe)" + }, + { + "@type": "Thing", + "name": "Daily air temperature" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_climatologies.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_climatologies.jsonld new file mode 100644 index 0000000..0978061 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_climatologies.jsonld @@ -0,0 +1,196 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsach-highres-climatologies#dataset", + "name": "CHELSAch-highres-climatologies (Switzerland) (V1.0)", + "description": "CHELSAch-highres-climatologies is a high-resolution climate dataset generated with the CHELSA downscaling model for Switzerland. It consists of long-term 30-year mean aggregated surface variables.", + "url": "https://www.chelsa-climate.org/datasets/chelsach-highres-climatologies", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "Switzerland", + "climatologies", + "high resolution", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1981-01-01/2010-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2010-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2010-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2010-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "application/x-netcdf", + "NetCDF" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSAch-highres-climatologies downloads (NetCDF)", + "description": "Download portal for CHELSAch-highres-climatologies.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fch%2Fclimatologies%2F", + "encodingFormat": [ + "application/x-netcdf" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "CHELSAch-highres-climatologies at high resolution", + "author": [ + { + "@type": "Person", + "name": "F. Zilker" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.689" + }, + "sameAs": "https://doi.org/10.16904/envidat.689" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Regional climatology" + }, + { + "@type": "Thing", + "name": "Switzerland climate normals" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_daily.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_daily.jsonld new file mode 100644 index 0000000..ed79bc4 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_daily.jsonld @@ -0,0 +1,196 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsach-highres_daily#dataset", + "name": "CHELSAch-highres-daily (Switzerland) (V1.0)", + "description": "CHELSAch-highres-daily is a high-resolution climate dataset generated with the CHELSA downscaling model for Switzerland. It consists of daily surface variables.", + "url": "https://www.chelsa-climate.org/datasets/chelsach-highres_daily", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "Switzerland", + "high resolution", + "daily climate", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1981-01-01/2022-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2022-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2022-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-01-01/2022-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Switzerland" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "application/x-netcdf", + "NetCDF" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSAch-highres-daily downloads (NetCDF)", + "description": "Download portal for CHELSAch-highres-daily.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fch%2Fdaily%2F", + "encodingFormat": [ + "application/x-netcdf" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "CHELSAch-highres-daily climate data at high resolution", + "author": [ + { + "@type": "Person", + "name": "F. Zilker" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.688" + }, + "sameAs": "https://doi.org/10.16904/envidat.688" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Regional high-resolution climate" + }, + { + "@type": "Thing", + "name": "Mountain climatology" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_climatologies.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_climatologies.jsonld new file mode 100644 index 0000000..7100cb7 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_climatologies.jsonld @@ -0,0 +1,370 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa_climatologies#dataset", + "name": "CHELSA-climatologies (V2.1)", + "description": "CHELSA-climatologies is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It consists of long-term climatological means.", + "url": "https://www.chelsa-climate.org/datasets/chelsa_climatologies", + "version": "2.1", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "climatologies", + "climate normals", + "downscaling", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Total Cloud Cover Percentage", + "alternateName": "clt", + "unitText": "percent", + "description": "Total cloud area fraction, reported as a percentage, for the whole atmospheric column.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Monthly Climate Moisture Index", + "alternateName": "cmi", + "unitText": "kg m-2 month-1", + "description": "Monthly ratio of precipitation to potential evapotranspiration; indicator of climatic water availability.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Relative Humidity", + "alternateName": "hurs", + "unitText": "percent", + "description": "Relative humidity near the surface.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Monthly Potential Evapotranspiration", + "alternateName": "pet", + "unitText": "kg m-2 month-1", + "description": "Total potential evapotranspiration for the month assuming unlimited water availability, calculated using Penman-Monteith.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Downwelling Shortwave Flux in Air", + "alternateName": "rsds", + "unitText": "W m-2", + "description": "Surface solar irradiance for UV calculations.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Wind Speed", + "alternateName": "sfcWind", + "unitText": "m s-1", + "description": "Near-surface, usually 10 meter, wind speed.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Vapor Pressure Deficit", + "alternateName": "vpd", + "unitText": "Pa", + "description": "Difference between saturation vapor pressure and actual vapor pressure.", + "temporalCoverage": "1981-2010/2071-2100", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-climatologies downloads (COG)", + "description": "Download portal for CHELSA climatologies.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fglobal%2Fclimatologies%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "Climatologies at high resolution for the earth’s land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2021", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.228" + }, + "sameAs": "https://doi.org/10.16904/envidat.228" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Climatology" + }, + { + "@type": "Thing", + "name": "Baseline climate" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_daily.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_daily.jsonld new file mode 100644 index 0000000..005ae18 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_daily.jsonld @@ -0,0 +1,353 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa_daily#dataset", + "name": "CHELSA-daily (V2.1)", + "description": "CHELSA-daily is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It consists of daily surface variables summarized as daily means, minima, maxima, or (in some cases) daily accumulations.", + "url": "https://www.chelsa-climate.org/datasets/chelsa_daily", + "version": "2.1", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "daily climate", + "downscaling", + "temperature", + "precipitation", + "humidity", + "wind speed", + "solar radiation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Total Cloud Cover Percentage", + "alternateName": "clt", + "unitText": "percent", + "description": "Total cloud area fraction, reported as a percentage, for the whole atmospheric column.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Relative Humidity", + "alternateName": "hurs", + "unitText": "percent", + "description": "Relative humidity near the surface.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "prec", + "unitText": "kg m-2 day-1", + "description": "Downscaled forecast precipitation from ERA5; not bias corrected and should not be mixed with pr.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Air Pressure", + "alternateName": "ps", + "unitText": "hPa", + "description": "Surface pressure, not mean sea-level pressure.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Downwelling Shortwave Flux in Air", + "alternateName": "rsds", + "unitText": "W m-2", + "description": "Surface solar irradiance for UV calculations.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Wind Speed", + "alternateName": "sfcWind", + "unitText": "m s-1", + "description": "Near-surface, usually 10 meter, wind speed.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Air Temperature Lapse Rate", + "alternateName": "tz", + "unitText": "K m-1", + "description": "Rate of change in air temperature with altitude calculated over the centennial period.", + "temporalCoverage": "1979-01-01/2025-08-29", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-daily downloads (COG)", + "description": "Download portal for CHELSA-daily. Files are provided via the CHELSA download service; see dataset page for details and variable-specific subdirectories.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fglobal%2Fdaily%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + }, + { + "@type": "DataDownload", + "name": "Catalog landing page (downloads)", + "description": "Alternative CHELSA downloads landing page.", + "contentUrl": "https://chelsa-climate.org/downloads/", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "CHELSA-daily climate data at high resolution", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.687" + }, + "sameAs": "https://doi.org/10.16904/envidat.687" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Climate" + }, + { + "@type": "Thing", + "name": "Downscaled meteorology" + }, + { + "@type": "Thing", + "name": "High-resolution gridded data" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_drought_indices.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_drought_indices.jsonld new file mode 100644 index 0000000..9fce445 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_drought_indices.jsonld @@ -0,0 +1,260 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa_annual#dataset", + "name": "CHELSA-drought-indices (V2.1)", + "description": "CHELSA-drought-indices is a dataset that consists of standardized precipitation (SPI) and the standardized precipitation evapotranspiration index (SPEI) and related drought metrics.", + "url": "https://www.chelsa-climate.org/datasets/chelsa_annual", + "version": "2.1", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "drought", + "SPI", + "SPEI", + "drought indices", + "climate extremes" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Multiyear Meteorological Drought", + "alternateName": "mymd", + "unitText": "id", + "description": "Identifier for multiyear meteorological drought events.", + "temporalCoverage": "1980-06-15/2018-07-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Multiyear Meteorological Drought at 10 km Resolution", + "alternateName": "mymd10", + "unitText": "id", + "description": "Identifier for multiyear meteorological drought events at 10 km resolution.", + "temporalCoverage": "1980-06-15/2018-07-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Kernel Normalized Difference Vegetation Index Anomaly", + "alternateName": "qkndvi", + "unitText": "1", + "description": "Annual anomaly in vegetation greenness derived from kernel normalized difference vegetation index.", + "temporalCoverage": "1980-06-15/2018-07-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Standardized Precipitation Evapotranspiration Index", + "alternateName": "spei12", + "unitText": "1", + "description": "Standardized climatic water balance index over a 12-month integration period.", + "temporalCoverage": "1980-06-15/2018-07-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Standardized Precipitation Index", + "alternateName": "spi12", + "unitText": "1", + "description": "Standardized precipitation anomaly index over a 12-month integration period.", + "temporalCoverage": "1980-06-15/2018-07-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-drought-indices downloads (COG)", + "description": "Download portal for CHELSA drought indices.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fglobal%2Fannual%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Global increase in the occurrence and impact of megadroughts", + "author": [ + { + "@type": "Person", + "name": "L. Chen" + }, + { + "@type": "Person", + "name": "P. Brun" + }, + { + "@type": "Person", + "name": "P. Buri" + }, + { + "@type": "Person", + "name": "S. Fatichi" + }, + { + "@type": "Person", + "name": "A. Gessler" + }, + { + "@type": "Person", + "name": "M. J. McCarthy" + }, + { + "@type": "Person", + "name": "F. Pelicciotti" + }, + { + "@type": "Person", + "name": "B. Stocker" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "datePublished": "2025", + "isPartOf": { + "@type": "Periodical", + "name": "Science" + }, + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1126/science.ado4245" + }, + "sameAs": "https://doi.org/10.1126/science.ado4245" + }, + { + "@type": "Dataset", + "name": "High resolution global standardized drought indices", + "author": [ + { + "@type": "Person", + "name": "L. Chen" + }, + { + "@type": "Person", + "name": "P. Brun" + }, + { + "@type": "Person", + "name": "P. Buri" + }, + { + "@type": "Person", + "name": "S. Fatichi" + }, + { + "@type": "Person", + "name": "A. Gessler" + }, + { + "@type": "Person", + "name": "M. J. McCarthy" + }, + { + "@type": "Person", + "name": "F. Pelicciotti" + }, + { + "@type": "Person", + "name": "B. Stocker" + }, + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2024", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.530" + }, + "sameAs": "https://doi.org/10.16904/envidat.530" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Drought" + }, + { + "@type": "Thing", + "name": "Climate risk" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_monthly.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_monthly.jsonld new file mode 100644 index 0000000..725a23f --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_monthly.jsonld @@ -0,0 +1,391 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa_monthly#dataset", + "name": "CHELSA-monthly (V2.1)", + "description": "CHELSA-monthly is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It consists of monthly aggregated surface variables summarized as monthly means or (in some cases) monthly accumulations.", + "url": "https://www.chelsa-climate.org/datasets/chelsa_monthly", + "version": "2.1", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "monthly climate", + "climate normals", + "downscaling", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Total Cloud Cover Percentage", + "alternateName": "clt", + "unitText": "percent", + "description": "Total cloud area fraction, reported as a percentage, for the whole atmospheric column.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Monthly Climate Moisture Index", + "alternateName": "cmi", + "unitText": "kg m-2 month-1", + "description": "Monthly ratio of precipitation to potential evapotranspiration; indicator of climatic water availability.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Relative Humidity", + "alternateName": "hurs", + "unitText": "percent", + "description": "Relative humidity near the surface.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Monthly Potential Evapotranspiration", + "alternateName": "pet", + "unitText": "kg m-2 month-1", + "description": "Total potential evapotranspiration for the month assuming unlimited water availability, calculated using Penman-Monteith.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 month-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Downwelling Shortwave Flux in Air", + "alternateName": "rsds", + "unitText": "W m-2", + "description": "Surface solar irradiance for UV calculations.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Near-Surface Wind Speed", + "alternateName": "sfcWind", + "unitText": "m s-1", + "description": "Near-surface, usually 10 meter, wind speed.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Standardized Precipitation Evapotranspiration Index", + "alternateName": "spei12", + "unitText": "1", + "description": "Standardized climatic water balance index over a 12-month integration period.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Standardized Precipitation Index", + "alternateName": "spi12", + "unitText": "1", + "description": "Standardized precipitation anomaly index over a 12-month integration period.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Vapor Pressure Deficit", + "alternateName": "vpd", + "unitText": "Pa", + "description": "Difference between saturation vapor pressure and actual vapor pressure.", + "temporalCoverage": "1979-01-15/2021-12-15", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas", + "geo": { + "@type": "GeoShape", + "box": "-180.0,-60.0 180.0,90.0" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-monthly downloads (COG)", + "description": "Download portal for CHELSA-monthly.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.unil.cloud.switch.ch%2Fchelsa02%2F&prefix=chelsa%2Fglobal%2Fmonthly%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + }, + { + "@type": "DataDownload", + "name": "Catalog landing page (downloads)", + "description": "Alternative CHELSA downloads landing page.", + "contentUrl": "https://chelsa-climate.org/downloads/", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Climatologies at high resolution for the earth's land surface areas", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "J. Böhner" + }, + { + "@type": "Person", + "name": "T. Kawohl" + }, + { + "@type": "Person", + "name": "H. Kreft" + }, + { + "@type": "Person", + "name": "R. W. Soria-Auza" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "H. P. Linder" + }, + { + "@type": "Person", + "name": "M. Kessler" + } + ], + "datePublished": "2017", + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "volumeNumber": "4", + "pagination": "170122", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.122" + }, + "sameAs": "https://doi.org/10.1038/sdata.2017.122" + }, + { + "@type": "Dataset", + "name": "CHELSA-monthly climate data at high resolution", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "P. Brun" + }, + { + "@type": "Person", + "name": "F. Zilker" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.686" + }, + "sameAs": "https://doi.org/10.16904/envidat.686" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Climate" + }, + { + "@type": "Thing", + "name": "Monthly aggregates" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial.jsonld new file mode 100644 index 0000000..6c5032a --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial.jsonld @@ -0,0 +1,197 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial#dataset", + "name": "CHELSA-TraCE21k-centennial (V1.0)", + "description": "CHELSA-TraCE21k-centennial is a global, kilometer-scale climate dataset generated with the CHELSA-TraCE21k downscaling model. It consists of monthly climatologies summarized over centennial time steps from 21k BP to 0 BP.", + "url": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "TraCE21k", + "paleoclimate", + "Last Glacial Maximum", + "downscaling", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Air Temperature Lapse Rate", + "alternateName": "tz", + "unitText": "K m-1", + "description": "Rate of change in air temperature with altitude calculated over the centennial period.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-TraCE21k-centennial downloads (COG)", + "description": "Download portal for TraCE21k centennial climatologies.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.zhdk.cloud.switch.ch%2Fchelsa01%2F&prefix=chelsa_trace21k%2Fglobal%2Fcentennial%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "CHELSA-TraCE21k: high-resolution (1 km) downscaled transient temperature and precipitation data since the Last Glacial Maximum", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "M. P. Nobis" + }, + { + "@type": "Person", + "name": "S. Normand" + }, + { + "@type": "Person", + "name": "C. H. Graham" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + } + ], + "datePublished": "2023", + "isPartOf": { + "@type": "Periodical", + "name": "Climate of the Past" + }, + "volumeNumber": "19", + "pagination": "439-456", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/cp-19-439-2023" + }, + "sameAs": "https://doi.org/10.5194/cp-19-439-2023" + }, + { + "@type": "Dataset", + "name": "CHELSA-TraCE21k: Downscaled transient temperature and precipitation data since the last glacial maximum", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "M. P. Nobis" + }, + { + "@type": "Person", + "name": "S. Normand" + }, + { + "@type": "Person", + "name": "C. H. Graham" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2020", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.211" + }, + "sameAs": "https://doi.org/10.16904/envidat.211" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Paleoclimate" + }, + { + "@type": "Thing", + "name": "Glacial-interglacial climate variability" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial_bioclim.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial_bioclim.jsonld new file mode 100644 index 0000000..976c5f3 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial_bioclim.jsonld @@ -0,0 +1,432 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial-bioclim#dataset", + "name": "CHELSA-TraCE21k-centennial-bioclim (V1.0)", + "description": "CHELSA-TraCE21k-centennial-bioclim is a global, kilometer-scale dataset generated with the CHELSA-TraCE21k downscaling model. It consists of bioclimatic and topographic variables summarized over centennial time steps from 21k BP to 0 BP.", + "url": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial-bioclim", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "TraCE21k", + "paleoclimate", + "bioclim", + "bioclimatic variables", + "downscaling" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Mean Annual Near-Surface Air Temperature", + "alternateName": "bio01", + "unitText": "K", + "description": "Mean annual temperature calculated as the average of mean monthly temperatures over the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Diurnal Near-Surface Air Temperature Range", + "alternateName": "bio02", + "unitText": "K", + "description": "Mean diurnal temperature range computed as the average of monthly daily maximum minus daily minimum near-surface air temperature", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Isothermality", + "alternateName": "bio03", + "unitText": "K", + "description": "Isothermality: 100 × bio02 ÷ bio07; compares day-night variability to annual temperature range", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Temperature Seasonality", + "alternateName": "bio04", + "unitText": "K", + "description": "Temperature seasonality given by the standard deviation of mean monthly temperatures", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Maximum Near-Surface Air Temperature of the Warmest Month", + "alternateName": "bio05", + "unitText": "K", + "description": "Highest monthly mean of daily maximum temperatures across the year; indicates peak thermal conditions", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Minimum Near-Surface Air Temperature of the Coldest Month", + "alternateName": "bio06", + "unitText": "K", + "description": "Lowest monthly mean of daily minimum temperatures across the year; characterizes winter cold intensity", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Annual Daily Mean Near-Surface Air Temperature Range", + "alternateName": "bio07", + "unitText": "K", + "description": "Annual temperature range calculated as bio05 minus bio06; measures amplitude between warmest and coldest months", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Near-Surface Air Temperature of the Wettest Quarter", + "alternateName": "bio08", + "unitText": "K", + "description": "Average monthly mean temperature over the wettest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Near-Surface Air Temperature of the Driest Quarter", + "alternateName": "bio09", + "unitText": "K", + "description": "Average monthly mean temperature over the driest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Mean Near-Surface Air Temperature of the Warmest Quarter", + "alternateName": "bio10", + "unitText": "K", + "description": "Average monthly mean temperature over the warmest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Daily Mean Near-Surface Air Temperature of the Coldest Quarter", + "alternateName": "bio11", + "unitText": "K", + "description": "Average monthly mean temperature over the coldest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Annual Precipitation", + "alternateName": "bio12", + "unitText": "kg m-2 year-1", + "description": "Sum of monthly precipitation totals across the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation of the Wettest Month", + "alternateName": "bio13", + "unitText": "kg m-2 month-1", + "description": "Maximum monthly precipitation total", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation of the Driest Month", + "alternateName": "bio14", + "unitText": "kg m-2 month-1", + "description": "Minimum monthly precipitation total", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Precipitation Seasonality", + "alternateName": "bio15", + "unitText": "kg m-2", + "description": "Coefficient of variation: 100 × standard deviation ÷ mean of monthly precipitation totals", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Wettest Quarter", + "alternateName": "bio16", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the wettest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Driest Quarter", + "alternateName": "bio17", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the driest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Warmest Quarter", + "alternateName": "bio18", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the warmest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Mean Monthly Precipitation of the Coldest Quarter", + "alternateName": "bio19", + "unitText": "kg m-2 month-1", + "description": "Average monthly precipitation during the coldest three-month period of the year", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Ice Sheet Surface Altitude", + "alternateName": "glz", + "unitText": "m", + "description": "Elevation of the ice sheet surface above sea level.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Altitude", + "alternateName": "orog", + "unitText": "m", + "description": "Geometric height of the land surface above the geoid.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Snow Cover Days", + "alternateName": "scd", + "unitText": "days", + "description": "Number of days per year with snow cover present at the surface.", + "temporalCoverage": "21000BP/0BP", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized", + "COG" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-TraCE21k-centennial-bioclim downloads (COG)", + "description": "Download portal for TraCE21k centennial bioclim variables.", + "contentUrl": "https://envicloud.wsl.ch/#/?bucket=https%3A%2F%2Fos.zhdk.cloud.switch.ch%2Fchelsa01%2F&prefix=chelsa_trace21k%2Fglobal%2Fbioclim%2F", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "profile=cloud-optimized" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "CHELSA-TraCE21k: high-resolution (1 km) downscaled transient temperature and precipitation data since the Last Glacial Maximum", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "M. P. Nobis" + }, + { + "@type": "Person", + "name": "S. Normand" + }, + { + "@type": "Person", + "name": "C. H. Graham" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + } + ], + "datePublished": "2023", + "isPartOf": { + "@type": "Periodical", + "name": "Climate of the Past" + }, + "volumeNumber": "19", + "pagination": "439-456", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/cp-19-439-2023" + }, + "sameAs": "https://doi.org/10.5194/cp-19-439-2023" + }, + { + "@type": "Dataset", + "name": "CHELSA-TraCE21k-centennial-bioclim and topographic data since the Last Glacial Maximum", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + } + ], + "publisher": { + "@type": "Organization", + "name": "EnviDat" + }, + "datePublished": "2025", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.16904/envidat.691" + }, + "sameAs": "https://doi.org/10.16904/envidat.691" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Paleoclimate bioclimatic predictors" + }, + { + "@type": "Thing", + "name": "Species distribution modeling (paleo)" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/chelsa_w5e5_daily.jsonld b/data/objects/summoned/generated/CHELSA/chelsa_w5e5_daily.jsonld new file mode 100644 index 0000000..b06091f --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/chelsa_w5e5_daily.jsonld @@ -0,0 +1,176 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets/chelsaw5e5#dataset", + "name": "CHELSA-W5E5-daily (V2.0 / listed as V1.0 in catalog entry)", + "description": "CHELSA-W5E5-daily is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It consists of daily surface variables summarized as daily means, minima, maxima, or (in some cases) daily accumulations.", + "url": "https://www.chelsa-climate.org/datasets/chelsaw5e5", + "version": "1.0", + "creator": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "CHELSA", + "W5E5", + "daily climate", + "downscaling", + "ISIMIP", + "temperature", + "precipitation" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Precipitation", + "alternateName": "pr", + "unitText": "kg m-2 day-1", + "description": "Precipitation including liquid and solid phases.", + "temporalCoverage": "1979-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Surface Downwelling Shortwave Flux in Air", + "alternateName": "rsds", + "unitText": "W m-2", + "description": "Surface solar irradiance for UV calculations.", + "temporalCoverage": "1979-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Mean Near-Surface Air Temperature", + "alternateName": "tas", + "unitText": "K", + "description": "Near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Maximum Near-Surface Air Temperature", + "alternateName": "tasmax", + "unitText": "K", + "description": "Maximum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Daily Minimum Near-Surface Air Temperature", + "alternateName": "tasmin", + "unitText": "K", + "description": "Minimum near-surface, usually 2 meter, air temperature.", + "temporalCoverage": "1979-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land surface areas" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "CHELSA-W5E5-daily downloads (ISIMIP portal)", + "description": "The catalog links the W5E5-based CHELSA daily product to the ISIMIP data portal.", + "contentUrl": "https://data.isimip.org/10.48364/ISIMIP.836809.3", + "encodingFormat": [ + "text/html" + ] + } + ], + "encodingFormat": [ + "text/html" + ], + "about": [ + { + "@type": "Thing", + "name": "Bias-adjusted climate forcing" + }, + { + "@type": "Thing", + "name": "Impact modeling" + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "CHELSA-W5E5: daily 1 km meteorological forcing data for climate impact studies", + "author": [ + { + "@type": "Person", + "name": "D. N. Karger" + }, + { + "@type": "Person", + "name": "S. Lange" + }, + { + "@type": "Person", + "name": "C. Hari" + }, + { + "@type": "Person", + "name": "C. P. O. Reyer" + }, + { + "@type": "Person", + "name": "O. Conrad" + }, + { + "@type": "Person", + "name": "N. E. Zimmermann" + }, + { + "@type": "Person", + "name": "K. Frieler" + } + ], + "datePublished": "2023", + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "volumeNumber": "15", + "pagination": "2445-2464", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-15-2445-2023" + }, + "sameAs": "https://doi.org/10.5194/essd-15-2445-2023" + } + ] +} diff --git a/data/objects/summoned/generated/CHELSA/datacatalog.jsonld b/data/objects/summoned/generated/CHELSA/datacatalog.jsonld new file mode 100644 index 0000000..da8177e --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/datacatalog.jsonld @@ -0,0 +1,65 @@ +{ + "@context": "https://schema.org/", + "@type": "DataCatalog", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets#datacatalog", + "name": "CHELSA Climate Data Catalog", + "description": "CHELSA is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. It provides high-resolution climatological data for the earth's land surface areas, including daily and monthly variables, long-term climatological means, bioclimatic variables, and drought indices. The catalog also includes regional high-resolution products (e.g., Switzerland, Canary Islands), paleoclimate reconstructions (TraCE21k), and other derived products. Coverage includes global land surface areas and selected regional domains; temporal scope spans past (paleoclimate), present (including 1979 onward for many products), and future scenarios (where applicable).", + "url": "https://www.chelsa-climate.org/datasets", + "inLanguage": "en", + "publisher": { + "@type": "Organization", + "@id": "https://www.chelsa-climate.org/#publisher", + "name": "WSL (Swiss Federal Institute for Forest, Snow and Landscape Research)", + "url": "https://www.wsl.ch/" + }, + "keywords": [ + "climate", + "climatology", + "CHELSA", + "downscaling", + "high resolution", + "temperature", + "precipitation", + "bioclimatic variables", + "drought indices" + ], + "dataset": [ + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa_daily#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa_monthly#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa_annual#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa_climatologies#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa_bioclim#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsach-highres_daily#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsach-highres-climatologies#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/canary-clim-canaries#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsa-trace21k-centennial-bioclim#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets/chelsaw5e5#dataset" + }, + { + "@id": "https://www.chelsa-climate.org/datasets#chelsacerra-daily-dataset" + } + ] +} \ No newline at end of file diff --git a/data/objects/summoned/generated/CHELSA/webpage.jsonld b/data/objects/summoned/generated/CHELSA/webpage.jsonld new file mode 100644 index 0000000..4340cc8 --- /dev/null +++ b/data/objects/summoned/generated/CHELSA/webpage.jsonld @@ -0,0 +1,100 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.chelsa-climate.org/datasets", + "name": "CHELSA Climate Datasets", + "alternateName": "CHELSA: Climatologies at high resolution for the earth's land surface areas", + "description": "Webpage for the CHELSA (Climatologies at high resolution for the earth's land surface areas) climate data catalog. CHELSA is a global, kilometer-scale climate dataset generated with the CHELSA downscaling model. The catalog provides access to multiple climate datasets including daily, monthly, and climatological means, bioclimatic variables, drought indices, and paleoclimate data. Datasets cover global, European, Swiss, and Canary Islands regions with temporal coverage from the Last Glacial Maximum (21k BP) through present observations to future climate scenarios (2071-2100).", + "url": "https://www.chelsa-climate.org/datasets", + "alternateUrl": "https://chelsa-climate.org/downloads/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "CHELSA Climate", + "url": "https://www.chelsa-climate.org/" + }, + "about": { + "@type": "DataCatalog", + "name": "CHELSA Climate Data Catalog", + "description": "A comprehensive catalog of high-resolution climate datasets for the earth's land surface areas", + "url": "https://www.chelsa-climate.org/datasets" + }, + "publisher": { + "@type": "Organization", + "name": "WSL", + "alternateName": "Swiss Federal Institute for Forest, Snow and Landscape Research", + "url": "https://www.wsl.ch/en/index.html" + }, + "mainEntity": { + "@type": "DataCatalog", + "name": "CHELSA Climate Data Catalog", + "description": "Global, kilometer-scale climate datasets generated with the CHELSA downscaling model", + "url": "https://www.chelsa-climate.org/datasets", + "publisher": { + "@type": "Organization", + "name": "WSL", + "alternateName": "Swiss Federal Institute for Forest, Snow and Landscape Research" + }, + "hasPart": [ + { + "@type": "Dataset", + "name": "CHELSA-daily", + "version": "2.1" + }, + { + "@type": "Dataset", + "name": "CHELSA-monthly", + "version": "2.1" + }, + { + "@type": "Dataset", + "name": "CHELSA-climatologies", + "version": "2.1" + }, + { + "@type": "Dataset", + "name": "CHELSA-bioclim", + "version": "2.1" + }, + { + "@type": "Dataset", + "name": "CHELSA-drought-indices", + "version": "2.1" + } + ] + }, + "keywords": [ + "CHELSA", + "climate", + "climatology", + "high resolution", + "downscaling", + "climate data", + "temperature", + "precipitation", + "bioclimatic variables", + "drought indices", + "paleoclimate", + "climate scenarios", + "global climate", + "kilometer-scale" + ], + "breadcrumb": { + "@type": "BreadcrumbList", + "itemListElement": [ + { + "@type": "ListItem", + "position": 1, + "name": "CHELSA Climate", + "item": "https://www.chelsa-climate.org/" + }, + { + "@type": "ListItem", + "position": 2, + "name": "Datasets", + "item": "https://www.chelsa-climate.org/datasets" + } + ] + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/Consensus_Land_Cover/consensus-land-cover.jsonld b/data/objects/summoned/generated/Consensus_Land_Cover/consensus-land-cover.jsonld new file mode 100644 index 0000000..156ebc0 --- /dev/null +++ b/data/objects/summoned/generated/Consensus_Land_Cover/consensus-land-cover.jsonld @@ -0,0 +1,341 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.earthenv.org/landcover#dataset", + "name": "Consensus Land Cover (Global 1-km Consensus Land Cover), Version 1.0", + "description": "A global 1-km (30 arc-second) consensus land-cover product for biodiversity and ecosystem modelling. The dataset integrates multiple global remote sensing-derived land-cover products and provides consensus prevalence (0–100%) for 12 land-cover classes at each grid cell. Two Version 1.0 variants are distributed: (1) Full v1.0 (with DISCover/GLCC), integrating GlobCover (2005–2006; v2.2), MODIS land-cover (MCD12Q1; v051), GLC2000 (v1.1), and DISCover/GLCC (v2; based on older imagery 1992–1993); and (2) Reduced v1.0 (without DISCover), integrating GlobCover, MODIS, and GLC2000 only, offered as an alternative for areas with substantial land-cover change in recent decades. Each variant contains 12 GeoTIFF layers (one per class). Values are unsigned 8-bit integers representing percent prevalence (0–100).", + "url": "https://www.earthenv.org/landcover", + "creator": [ + { + "@type": "Person", + "name": "Mao-Ning Tuanmu" + }, + { + "@type": "Person", + "name": "Walter Jetz" + } + ], + "publisher": { + "@type": "Organization", + "@id": "https://www.earthenv.org/#org", + "name": "EarthEnv", + "url": "https://www.earthenv.org/", + "member": [ + { + "@type": "Organization", + "name": "Yale University" + }, + { + "@type": "Organization", + "name": "University of Florida" + }, + { + "@type": "Organization", + "name": "University at Buffalo" + } + ] + }, + "keywords": [ + "land cover", + "consensus", + "remote sensing", + "biodiversity", + "ecosystem modelling", + "GlobCover", + "MODIS", + "MCD12Q1", + "GLC2000", + "DISCover", + "GLCC", + "prevalence", + "GeoTIFF" + ], + "license": "https://creativecommons.org/licenses/by-nc/4.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Evergreen and Deciduous Needleleaf Trees", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Evergreen Broadleaf Trees", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Deciduous Broadleaf Trees", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Mixed and Other Trees", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Shrubs", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Herbaceous Vegetation", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Cultivated and Managed Vegetation", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Regularly Flooded Vegetation", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Urban and Built-Up", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Snow and Ice", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Barren", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + }, + { + "@type": "PropertyValue", + "name": "Open Water", + "description": "Consensus prevalence (0–100%)", + "temporalCoverage": "1992-01-01/2006-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-56 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "30 arc-second (~1 km at the equator)" + } + ], + "measurementTechnique": "Integration of multiple global remote sensing-derived land-cover products to estimate per-class consensus prevalence (percent) at 1-km resolution.", + "distribution": [ + { + "@type": "DataDownload", + "name": "Full Version 1.0 downloads (with DISCover) – directory", + "description": "Directory containing GeoTIFF layers (one per class) for Full Version 1.0 (with DISCover/GLCC).", + "contentUrl": "https://data.earthenv.org/consensus_landcover/with_DISCover/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Reduced Version 1.0 downloads (without DISCover) – directory", + "description": "Directory containing GeoTIFF layers (one per class) for Reduced Version 1.0 (without DISCover/GLCC).", + "contentUrl": "https://data.earthenv.org/consensus_landcover/without_DISCover/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Example class GeoTIFF (Full v1.0): class 1", + "description": "Example direct file link for a single land-cover class GeoTIFF in the Full v1.0 distribution.", + "contentUrl": "https://data.earthenv.org/consensus_landcover/with_DISCover/consensus_full_class_1.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example class GeoTIFF (Reduced v1.0): class 1", + "description": "Example direct file link for a single land-cover class GeoTIFF in the Reduced v1.0 distribution.", + "contentUrl": "https://data.earthenv.org/consensus_landcover/without_DISCover/Consensus_reduced_class_1.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "A global 1-km consensus land-cover product for biodiversity and ecosystem modeling", + "author": [ + { + "@type": "Person", + "name": "Mao-Ning Tuanmu" + }, + { + "@type": "Person", + "name": "Walter Jetz" + } + ], + "datePublished": "2014", + "isPartOf": { + "@type": "Periodical", + "name": "Global Ecology and Biogeography" + }, + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1111/geb.12182" + } + ], + "sameAs": "https://doi.org/10.1111/geb.12182" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Remote sensing" + }, + { + "@type": "Thing", + "name": "Biodiversity modelling" + }, + { + "@type": "Thing", + "name": "Ecosystem modelling" + } + ] +} diff --git a/data/objects/summoned/generated/Consensus_Land_Cover/webpage.jsonld b/data/objects/summoned/generated/Consensus_Land_Cover/webpage.jsonld new file mode 100644 index 0000000..2159e1a --- /dev/null +++ b/data/objects/summoned/generated/Consensus_Land_Cover/webpage.jsonld @@ -0,0 +1,80 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.earthenv.org/landcover#webpage", + "name": "Global 1-km Consensus Land Cover", + "description": "Webpage for the Global 1-km Consensus Land Cover dataset, a global land-cover product that integrates multiple remote sensing-derived land-cover products and provides consensus information on the prevalence of 12 land-cover classes at 1-km resolution for biodiversity and ecosystem modeling. The dataset is available in two versions: Full Version 1.0 (with DISCover) and Reduced Version 1.0 (without DISCover), each containing 12 GeoTIFF layers representing consensus prevalence (0-100%) for different land-cover classes.", + "url": "https://www.earthenv.org/landcover", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "EarthEnv", + "url": "https://www.earthenv.org/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.earthenv.org/#org", + "name": "EarthEnv", + "url": "https://www.earthenv.org/", + "member": [ + { + "@type": "Organization", + "name": "Yale University" + }, + { + "@type": "Organization", + "name": "University of Florida" + }, + { + "@type": "Organization", + "name": "University at Buffalo" + } + ] + }, + "about": { + "@type": "Dataset", + "@id": "https://www.earthenv.org/landcover#dataset", + "name": "Consensus Land Cover (Global 1-km Consensus Land Cover)", + "description": "A global 1-km consensus land-cover product for biodiversity and ecosystem modelling", + "url": "https://www.earthenv.org/landcover" + }, + "mainEntity": { + "@type": "Dataset", + "@id": "https://www.earthenv.org/landcover#dataset", + "name": "Consensus Land Cover (Global 1-km Consensus Land Cover)", + "description": "A global 1-km consensus land-cover product for biodiversity and ecosystem modelling", + "url": "https://www.earthenv.org/landcover" + }, + "keywords": [ + "land cover", + "consensus", + "remote sensing", + "biodiversity", + "ecosystem modelling", + "global", + "1-km resolution", + "GeoTIFF", + "GlobCover", + "MODIS", + "GLC2000", + "DISCover" + ], + "breadcrumb": { + "@type": "BreadcrumbList", + "itemListElement": [ + { + "@type": "ListItem", + "position": 1, + "name": "EarthEnv", + "item": "https://www.earthenv.org/" + }, + { + "@type": "ListItem", + "position": 2, + "name": "Global 1-km Consensus Land Cover", + "item": "https://www.earthenv.org/landcover" + } + ] + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/FLO1K/flo1k.jsonld b/data/objects/summoned/generated/FLO1K/flo1k.jsonld new file mode 100644 index 0000000..22a9737 --- /dev/null +++ b/data/objects/summoned/generated/FLO1K/flo1k.jsonld @@ -0,0 +1,214 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://doi.org/10.6084/m9.figshare.c.3890224.v1#dataset", + "name": "FLO1K: Global maps of mean, maximum and minimum annual streamflow at 1 km resolution (1960–2015)", + "url": "https://figshare.com/collections/FLO1K_global_maps_of_mean_maximum_and_minimum_annual_streamflow_at_1_km_resolution_from_1960_through_2015/3890224", + "description": "FLO1K provides global, spatially continuous gridded maps of annual streamflow at ~1 km (30 arc-second) resolution for each year from 1960 through 2015. Annual flow metrics include mean annual flow as well as minimum and maximum monthly flow for a given year. The dataset is intended for hydrology, freshwater ecology, water resources assessment, and large-scale environmental modeling applications.", + "keywords": [ + "FLO1K", + "streamflow", + "runoff", + "annual streamflow", + "mean annual flow", + "maximum flow", + "minimum flow", + "global", + "1 km", + "30 arc-second", + "hydrology", + "river discharge", + "freshwater", + "Figshare" + ], + "creator": [ + { + "@type": "Person", + "name": "Valerio Barbarossa" + }, + { + "@type": "Person", + "name": "Mark A. J. Huijbregts" + }, + { + "@type": "Person", + "name": "Arthur H. W. Beusen" + }, + { + "@type": "Person", + "name": "Hylke E. Beck" + }, + { + "@type": "Person", + "name": "Henry King" + }, + { + "@type": "Person", + "name": "Aafke M. Schipper" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Mean annual streamflow", + "description": "Mean annual flow for each year (gridded, global, ~1 km).", + "temporalCoverage": "1960-01-01/2015-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas excluding Antarctica", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1Y", + "spatialResolution": "30 arc-second (~1 km)" + }, + { + "@type": "PropertyValue", + "name": "Maximum annual streamflow (maximum monthly flow per year)", + "description": "Maximum monthly flow within each year (gridded, global, ~1 km).", + "temporalCoverage": "1960-01-01/2015-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas excluding Antarctica", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1Y", + "spatialResolution": "30 arc-second (~1 km)" + }, + { + "@type": "PropertyValue", + "name": "Minimum annual streamflow (minimum monthly flow per year)", + "description": "Minimum monthly flow within each year (gridded, global, ~1 km).", + "temporalCoverage": "1960-01-01/2015-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas excluding Antarctica", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1Y", + "spatialResolution": "30 arc-second (~1 km)" + } + ], + "encodingFormat": [ + "application/x-netcdf", + "application/zip", + "text/html" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "Figshare collection landing page", + "description": "Dataset collection landing page and downloads hosted on Figshare.", + "contentUrl": "https://figshare.com/collections/FLO1K_global_maps_of_mean_maximum_and_minimum_annual_streamflow_at_1_km_resolution_from_1960_through_2015/3890224", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Persistent identifier (Figshare collection DOI landing page)", + "description": "Persistent DOI for the FLO1K Figshare collection.", + "contentUrl": "https://doi.org/10.6084/m9.figshare.c.3890224.v1", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "FLO1K, global maps of mean, maximum and minimum annual streamflow at 1 km resolution from 1960 through 2015", + "author": [ + { + "@type": "Person", + "name": "Valerio Barbarossa" + }, + { + "@type": "Person", + "name": "Mark A. J. Huijbregts" + }, + { + "@type": "Person", + "name": "Arthur H. W. Beusen" + }, + { + "@type": "Person", + "name": "Hylke E. Beck" + }, + { + "@type": "Person", + "name": "Henry King" + }, + { + "@type": "Person", + "name": "Aafke M. Schipper" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "datePublished": "2018", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2018.52" + } + ], + "sameAs": "https://doi.org/10.1038/sdata.2018.52" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Streamflow" + }, + { + "@type": "Thing", + "name": "Runoff" + }, + { + "@type": "Thing", + "name": "River discharge" + }, + { + "@type": "Thing", + "name": "Freshwater resources" + } + ], + "sameAs": [ + "https://doi.org/10.6084/m9.figshare.c.3890224.v1" + ] +} diff --git a/data/objects/summoned/generated/FLO1K/webpage.jsonld b/data/objects/summoned/generated/FLO1K/webpage.jsonld new file mode 100644 index 0000000..c68f84a --- /dev/null +++ b/data/objects/summoned/generated/FLO1K/webpage.jsonld @@ -0,0 +1,36 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://figshare.com/collections/FLO1K_global_maps_of_mean_maximum_and_minimum_annual_streamflow_at_1_km_resolution_from_1960_through_2015/3890224", + "name": "FLO1K: Global maps of mean, maximum and minimum annual streamflow at 1 km resolution (1960–2015)", + "description": "Webpage for FLO1K on Figshare—global gridded mean, maximum and minimum annual streamflow at 1 km resolution, 1960–2015. By Barbarossa, Huijbregts, Beusen, Beck, King, Schipper. Published in Scientific Data (2018).", + "url": "https://figshare.com/collections/FLO1K_global_maps_of_mean_maximum_and_minimum_annual_streamflow_at_1_km_resolution_from_1960_through_2015/3890224", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "about": { + "@type": "Dataset", + "name": "FLO1K", + "url": "https://doi.org/10.6084/m9.figshare.c.3890224.v1" + }, + "publisher": { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "FLO1K: Global maps of mean, maximum and minimum annual streamflow at 1 km resolution (1960–2015)", + "url": "https://doi.org/10.6084/m9.figshare.c.3890224.v1#dataset" + }, + "keywords": [ + "FLO1K", + "streamflow", + "hydrology", + "Figshare" + ] +} diff --git a/data/objects/summoned/generated/G-RUN/g-run.jsonld b/data/objects/summoned/generated/G-RUN/g-run.jsonld new file mode 100644 index 0000000..cb7f417 --- /dev/null +++ b/data/objects/summoned/generated/G-RUN/g-run.jsonld @@ -0,0 +1,193 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176#dataset", + "name": "G-RUN (GRUN): Global Runoff Reconstruction", + "url": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176", + "description": "GRUN (Global Runoff Reconstruction; often referred to as G-RUN) is an observation-based global gridded reconstruction of monthly runoff derived using machine learning trained on in-situ streamflow observations. The dataset provides global runoff rates on a 0.5° grid over the period 1902–2014 and is intended for analyses of freshwater dynamics, hydroclimate variability, drought propagation, and evaluation of hydrological model simulations.", + "keywords": [ + "GRUN", + "G-RUN", + "global runoff", + "runoff reconstruction", + "streamflow", + "hydrology", + "hydroclimate", + "machine learning", + "reanalysis", + "monthly", + "0.5 degree", + "global gridded dataset", + "Figshare" + ], + "creator": [ + { + "@type": "Person", + "name": "Gionata Ghiggi", + "affiliation": { + "@type": "Organization", + "name": "ETH Zurich", + "url": "https://ethz.ch/en.html" + } + }, + { + "@type": "Person", + "name": "Vincent Humphrey", + "affiliation": { + "@type": "Organization", + "name": "ETH Zurich", + "url": "https://ethz.ch/en.html" + } + }, + { + "@type": "Person", + "name": "Sonia I. Seneviratne", + "affiliation": { + "@type": "Organization", + "name": "ETH Zurich", + "url": "https://ethz.ch/en.html" + } + }, + { + "@type": "Person", + "name": "Lukas Gudmundsson", + "affiliation": { + "@type": "Organization", + "name": "ETH Zurich", + "url": "https://ethz.ch/en.html" + } + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Runoff", + "description": "Monthly gridded runoff rates reconstructed using machine learning trained on in-situ streamflow observations.", + "temporalCoverage": "1902-01-01/2014-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global gridded land runoff reconstruction", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "0.5 degree" + } + ], + "measurementTechnique": [ + "Machine learning reconstruction trained on in-situ streamflow observations", + "Prediction based on antecedent precipitation and temperature from atmospheric reanalysis inputs" + ], + "encodingFormat": [ + "application/x-netcdf", + "application/zip", + "text/html" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "Figshare dataset landing page", + "description": "Dataset landing page and downloads hosted on Figshare.", + "contentUrl": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Persistent identifier (Figshare DOI landing page)", + "description": "Persistent DOI for the GRUN dataset on Figshare.", + "contentUrl": "https://doi.org/10.6084/m9.figshare.9228176", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "GRUN: an observation-based global gridded runoff dataset from 1902 to 2014", + "author": [ + { + "@type": "Person", + "name": "Gionata Ghiggi" + }, + { + "@type": "Person", + "name": "Vincent Humphrey" + }, + { + "@type": "Person", + "name": "Sonia I. Seneviratne" + }, + { + "@type": "Person", + "name": "Lukas Gudmundsson" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "datePublished": "2019", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-11-1655-2019" + } + ], + "sameAs": "https://doi.org/10.5194/essd-11-1655-2019" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Runoff" + }, + { + "@type": "Thing", + "name": "Streamflow" + }, + { + "@type": "Thing", + "name": "Hydroclimate variability" + }, + { + "@type": "Thing", + "name": "Drought" + }, + { + "@type": "Thing", + "name": "Freshwater resources" + } + ], + "sameAs": [ + "https://doi.org/10.6084/m9.figshare.9228176" + ] +} diff --git a/data/objects/summoned/generated/G-RUN/webpage.jsonld b/data/objects/summoned/generated/G-RUN/webpage.jsonld new file mode 100644 index 0000000..af3ade7 --- /dev/null +++ b/data/objects/summoned/generated/G-RUN/webpage.jsonld @@ -0,0 +1,38 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176", + "name": "G-RUN (GRUN): Global Runoff Reconstruction", + "description": "Webpage for G-RUN (GRUN) on Figshare—global gridded monthly runoff reconstruction 1902–2014 at 0.5° resolution. By Gionata Ghiggi, Vincent Humphrey, Sonia I. Seneviratne, Lukas Gudmundsson (ETH Zurich). Published in Earth System Science Data (2019).", + "url": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "about": { + "@type": "Dataset", + "name": "G-RUN", + "url": "https://doi.org/10.6084/m9.figshare.9228176" + }, + "publisher": { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "G-RUN (GRUN): Global Runoff Reconstruction", + "url": "https://figshare.com/articles/dataset/GRUN_Global_Runoff_Reconstruction/9228176#dataset" + }, + "keywords": [ + "G-RUN", + "GRUN", + "global runoff", + "hydrology", + "Figshare", + "ETH Zurich" + ] +} diff --git a/data/objects/summoned/generated/GFC/gfc.jsonld b/data/objects/summoned/generated/GFC/gfc.jsonld new file mode 100644 index 0000000..52acb4e --- /dev/null +++ b/data/objects/summoned/generated/GFC/gfc.jsonld @@ -0,0 +1,446 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html#dataset", + "name": "Global Forest Change (GFC) 2000–2023 — GFC-2023-v1.11", + "description": "Global Forest Change (GFC) provides results from time-series analysis of Landsat imagery to characterize global forest extent and change from 2000 through 2023. The direct-download package is organized as 10×10 degree GeoTIFF tiles at ~30 m resolution (1 arc-second per pixel). Core layers include: tree canopy cover for year 2000 (percent canopy closure for vegetation >5 m), forest gain (2000–2012), year of gross forest cover loss (coded by loss year for 2001–2023), a data mask for land/water/no-data, and reference Landsat cloud-free composites for the first and last available years (typically ~2000 and ~2023) in red, NIR, SWIR1, and SWIR2 bands. Version 1.11 adds 2023 loss-year updates and updated multispectral imagery and includes methodological updates (including Landsat 8/9 use and reprocessing from 2011 onward).", + "url": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html", + "version": "GFC-2023-v1.11", + "creator": [ + { + "@type": "Person", + "name": "Matthew C. Hansen" + }, + { + "@type": "Person", + "name": "Peter V. Potapov" + }, + { + "@type": "Person", + "name": "Rebecca Moore" + }, + { + "@type": "Person", + "name": "Matt Hancher" + }, + { + "@type": "Person", + "name": "Svetlana A. Turubanova" + }, + { + "@type": "Person", + "name": "Alexandra Tyukavina" + }, + { + "@type": "Person", + "name": "David Thau" + }, + { + "@type": "Person", + "name": "Stephen V. Stehman" + }, + { + "@type": "Person", + "name": "Scott J. Goetz" + }, + { + "@type": "Person", + "name": "Thomas R. Loveland" + }, + { + "@type": "Person", + "name": "Arun Kommareddy" + }, + { + "@type": "Person", + "name": "Andrey Egorov" + }, + { + "@type": "Person", + "name": "Lydia Chini" + }, + { + "@type": "Person", + "name": "Christopher O. Justice" + }, + { + "@type": "Person", + "name": "John R. G. Townshend" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Hansen/UMD/Google/USGS/NASA", + "url": "https://glad.earthengine.app/view/global-forest-change" + }, + { + "@type": "Organization", + "name": "Global Land Analysis and Discovery (GLAD) Laboratory, University of Maryland", + "url": "https://glad.umd.edu/" + } + ], + "keywords": [ + "forest monitoring", + "deforestation", + "forest loss", + "forest gain", + "tree canopy cover", + "Global Forest Change", + "GFC", + "Landsat", + "remote sensing", + "GLAD", + "University of Maryland", + "Google Earth Engine" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "text/plain" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Tree Canopy Cover in 2000", + "alternateName": "treecover2000", + "unitText": "percent", + "description": "Tree canopy cover for year 2000, defined as canopy closure for vegetation taller than 5 m.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "Forest Cover Gain", + "alternateName": "gain", + "unitText": "binary", + "description": "Forest gain during 2000-2012.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "Year of Gross Forest Cover Loss", + "alternateName": "lossyear", + "unitText": "year code", + "description": "Year of gross forest cover loss event; 0 indicates no loss and 1-23 correspond primarily to 2001-2023.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "Data Mask", + "alternateName": "datamask", + "unitText": "class code", + "description": "Data mask classes for no data, mapped land surface, and persistent water bodies.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "First Reference Landsat Composite", + "alternateName": "first", + "unitText": "digital number", + "description": "Circa year-2000 Landsat cloud-free composite in red, NIR, SWIR1, and SWIR2 bands.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "Last Reference Landsat Composite", + "alternateName": "last", + "unitText": "digital number", + "description": "Circa year-2023 Landsat cloud-free composite in red, NIR, SWIR1, and SWIR2 bands.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + }, + { + "@type": "PropertyValue", + "name": "Gross Forest Cover Loss", + "alternateName": "loss", + "unitText": "derived binary", + "description": "Derived indicator for pixels where lossyear is greater than 0.", + "temporalCoverage": "2000-01-01/2023-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global (granules provided for 180W–180E, 80N–60S)", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,80" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitCode": "MTR", + "description": "Approx. 30 m (1 arc-second per pixel; Earth Engine catalog lists ~30.92 m pixel size)." + } + } + ], + "measurementTechnique": [ + "Time-series analysis of Landsat imagery to map forest extent and change", + "Change detection for stand-replacement disturbance (forest to non-forest)", + "Annual updating of loss-year and reference imagery layers" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "Direct download page (tile selection map and links)", + "description": "Interactive download instructions and example granule URLs for 10×10 degree GeoTIFF tiles.", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (treecover2000) — 40N 080W", + "description": "Example GeoTIFF granule for tree canopy cover in year 2000; filenames encode the tile top-left corner.", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_treecover2000_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (gain) — 40N 080W", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_gain_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (lossyear) — 40N 080W", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_lossyear_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (datamask) — 40N 080W", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_datamask_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (first composite) — 40N 080W", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_first_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Example tile (last composite) — 40N 080W", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/Hansen_GFC-2023-v1.11_last_40N_080W.tif", + "encodingFormat": [ + "image/tiff", + "application=geotiff" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: treecover2000", + "description": "Text file listing URLs for all granules for the treecover2000 layer.", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/treecover2000.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: gain", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/gain.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: lossyear", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/lossyear.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: datamask", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/datamask.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: first", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/first.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Layer-wide URL list: last", + "contentUrl": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/last.txt", + "encodingFormat": [ + "text/plain" + ] + }, + { + "@type": "DataDownload", + "name": "Google Earth Engine access (asset)", + "description": "Analyze the dataset directly in Google Earth Engine using asset ID UMD/hansen/global_forest_change_2023_v1_11.", + "contentUrl": "https://developers.google.com/earth-engine/datasets/catalog/UMD_hansen_global_forest_change_2023_v1_11", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Web visualization (recommended linking URL)", + "description": "Interactive visualization site recommended by the dataset providers for linking/citation.", + "contentUrl": "https://glad.earthengine.app/view/global-forest-change", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "High-Resolution Global Maps of 21st-Century Forest Cover Change", + "isPartOf": { + "@type": "Periodical", + "name": "Science" + }, + "datePublished": "2013-11-15", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1126/science.1244693" + } + ], + "sameAs": "https://doi.org/10.1126/science.1244693" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Forest monitoring" + }, + { + "@type": "Thing", + "name": "Deforestation" + }, + { + "@type": "Thing", + "name": "Land cover change" + }, + { + "@type": "Thing", + "name": "Remote sensing" + }, + { + "@type": "Thing", + "name": "Landsat" + } + ] +} diff --git a/data/objects/summoned/generated/GFC/webpage.jsonld b/data/objects/summoned/generated/GFC/webpage.jsonld new file mode 100644 index 0000000..f2b01ee --- /dev/null +++ b/data/objects/summoned/generated/GFC/webpage.jsonld @@ -0,0 +1,51 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html#webpage", + "name": "Global Forest Change 2000–2023 (GFC-2023-v1.11) — Data Download", + "description": "Download page for the Hansen/GLAD Global Forest Change (GFC) dataset version GFC-2023-v1.11. The page provides direct-download links for 10×10 degree GeoTIFF tiles and layer-wide URL lists for global forest extent and change products derived from time-series analysis of Landsat imagery, including year-2000 tree canopy cover, forest gain (2000–2012), annual forest loss year (2001–2023), a data mask, and reference Landsat composites for the first and last available years (typically ~2000 and ~2023). It also includes version 1.11 user notes, license/attribution guidance, and pointers to web visualization and Google Earth Engine access.", + "url": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "@id": "https://storage.googleapis.com/#website", + "name": "Google Cloud Storage", + "url": "https://storage.googleapis.com/" + }, + "publisher": [ + { + "@type": "Organization", + "name": "Global Land Analysis and Discovery (GLAD) Laboratory, University of Maryland", + "url": "https://glad.umd.edu/" + }, + { + "@type": "Organization", + "name": "Google Earth Engine", + "url": "https://earthengine.google.com/" + } + ], + "keywords": [ + "Global Forest Change", + "GFC", + "forest", + "deforestation", + "forest loss", + "forest gain", + "tree cover", + "Landsat", + "remote sensing", + "global mapping", + "GeoTIFF", + "GLAD", + "University of Maryland" + ], + "about": { + "@type": "Dataset", + "@id": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html#dataset" + }, + "mainEntity": { + "@type": "Dataset", + "@id": "https://storage.googleapis.com/earthenginepartners-hansen/GFC-2023-v1.11/download.html#dataset" + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/GHSL/ghsl.jsonld b/data/objects/summoned/generated/GHSL/ghsl.jsonld new file mode 100644 index 0000000..686b160 --- /dev/null +++ b/data/objects/summoned/generated/GHSL/ghsl.jsonld @@ -0,0 +1,247 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://human-settlement.emergency.copernicus.eu/download.php#dataset", + "name": "GHSL (Global Human Settlement Layer)", + "url": "https://human-settlement.emergency.copernicus.eu/download.php", + "description": "The Global Human Settlement Layer (GHSL) is a global, multi-temporal suite of geospatial datasets describing human settlements, built-up areas, and population distribution derived from Earth Observation and population data. GHSL products include gridded built-up surface, built-up volume, building height and settlement characteristics, population grids, and settlement typologies (e.g., Degree of Urbanisation / settlement model). Data are provided at multiple spatial resolutions and coordinate systems and span multiple epochs, including short-range projections for 1975–2030 for key products.", + "keywords": [ + "GHSL", + "Global Human Settlement Layer", + "human settlements", + "built-up area", + "built-up surface", + "built-up volume", + "building height", + "population grid", + "settlement model", + "degree of urbanisation", + "urbanization", + "exposure mapping", + "remote sensing", + "Copernicus", + "JRC" + ], + "creator": [ + { + "@type": "Organization", + "name": "European Commission, Joint Research Centre (JRC)", + "url": "https://data.jrc.ec.europa.eu/collection/ghsl" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Copernicus Emergency Management Service", + "url": "https://emergency.copernicus.eu/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "European Commission, Joint Research Centre (JRC)", + "url": "https://data.jrc.ec.europa.eu/collection/ghsl" + } + ], + "isAccessibleForFree": true, + "license": "https://creativecommons.org/licenses/by/4.0/", + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Built-up surface", + "description": "Gridded built-up surface area (including total and non-residential components for some products).", + "temporalCoverage": "1975-01-01/2030-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global Human Settlement Layer product coverage", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Built-up volume", + "description": "Gridded built-up volume estimates (including total and non-residential components for some products).", + "temporalCoverage": "1975-01-01/2030-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global Human Settlement Layer product coverage", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Building height", + "description": "Gridded building height estimates for selected reference years/products.", + "temporalCoverage": "1975-01-01/2030-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global Human Settlement Layer product coverage", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Population", + "description": "Residential population grid (number of people per cell) for multiple epochs and projections.", + "temporalCoverage": "1975-01-01/2030-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global Human Settlement Layer product coverage", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Settlement Typology and Degree of Urbanisation", + "description": "Settlement model classification based on the UN-recommended Degree of Urbanisation methodology.", + "temporalCoverage": "1975-01-01/2030-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global Human Settlement Layer product coverage", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "encodingFormat": [ + "text/html", + "application/zip", + "image/tiff", + "application/geotiff", + "text/csv", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "application/geopackage+sqlite3" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "GHSL direct download (advanced users)", + "description": "Direct download interface for GHSL products (tile-based and single-file downloads).", + "contentUrl": "https://human-settlement.emergency.copernicus.eu/download.php", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "GHSL download wizard (step-by-step)", + "description": "Interactive wizard to select GHSL product group, dataset, epoch, resolution, and coordinate system for download.", + "contentUrl": "https://human-settlement.emergency.copernicus.eu/downloadWizard.php", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Use conditions and how to cite", + "description": "GHSL use conditions and citation guidance, including license and reference publication pointers.", + "contentUrl": "https://human-settlement.emergency.copernicus.eu/GHSLhowToCite.php", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "JRC GHSL collection landing page", + "description": "European Commission JRC collection page aggregating GHSL datasets and releases.", + "contentUrl": "https://data.jrc.ec.europa.eu/collection/ghsl", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Advances on the Global Human Settlement Layer by joint assessment of Earth Observation and population survey data", + "author": [ + { + "@type": "Person", + "name": "M. Pesaresi" + }, + { + "@type": "Person", + "name": "M. Schiavina" + }, + { + "@type": "Person", + "name": "P. Politis" + }, + { + "@type": "Person", + "name": "S. Freire" + }, + { + "@type": "Person", + "name": "K. Krasnodębska" + }, + { + "@type": "Person", + "name": "J. H. Uhl" + }, + { + "@type": "Person", + "name": "T. Kemper" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "International Journal of Digital Earth" + }, + "datePublished": "2024", + "sameAs": "https://doi.org/10.1080/17538947.2024.2390454" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Human settlements" + }, + { + "@type": "Thing", + "name": "Built environment" + }, + { + "@type": "Thing", + "name": "Population distribution" + }, + { + "@type": "Thing", + "name": "Urbanization" + }, + { + "@type": "Thing", + "name": "Remote sensing" + } + ], + "sameAs": [ + "https://human-settlement.emergency.copernicus.eu/" + ] +} diff --git a/data/objects/summoned/generated/GHSL/webpage.jsonld b/data/objects/summoned/generated/GHSL/webpage.jsonld new file mode 100644 index 0000000..eb80f7e --- /dev/null +++ b/data/objects/summoned/generated/GHSL/webpage.jsonld @@ -0,0 +1,38 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://human-settlement.emergency.copernicus.eu/download.php", + "name": "GHSL (Global Human Settlement Layer) — Download", + "description": "Download page for the Global Human Settlement Layer (GHSL): built-up areas, population and settlement data from European Commission JRC / Copernicus Emergency Management Service.", + "url": "https://human-settlement.emergency.copernicus.eu/download.php", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Copernicus Emergency Management Service", + "url": "https://emergency.copernicus.eu/" + }, + "about": { + "@type": "Dataset", + "name": "GHSL", + "url": "https://human-settlement.emergency.copernicus.eu/download.php#dataset" + }, + "publisher": { + "@type": "Organization", + "name": "European Commission, Joint Research Centre (JRC)", + "url": "https://data.jrc.ec.europa.eu/collection/ghsl" + }, + "mainEntity": { + "@type": "Dataset", + "name": "GHSL (Global Human Settlement Layer)", + "url": "https://human-settlement.emergency.copernicus.eu/download.php#dataset" + }, + "keywords": [ + "GHSL", + "human settlements", + "built-up", + "population", + "Copernicus", + "JRC" + ] +} diff --git a/data/objects/summoned/generated/GPP_MOD17/gpp_mod17.jsonld b/data/objects/summoned/generated/GPP_MOD17/gpp_mod17.jsonld new file mode 100644 index 0000000..75b9738 --- /dev/null +++ b/data/objects/summoned/generated/GPP_MOD17/gpp_mod17.jsonld @@ -0,0 +1,158 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "@id": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/#dataset", + "name": "GPP MOD17", + "url": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/", + "description": "Global gross primary production (GPP) and net primary production (NPP) derived from the MOD17 algorithm and distributed by the Numerical Terradynamic Simulation Group (NTSG), University of Montana. Data are available via directory listing at the dataset URL and typically include multi-temporal MOD17 products (e.g., 8-day, monthly, annual) in common remote sensing / GIS formats.", + "comment": "This dataset metadata was generated by AI.", + "category": "ecosystem", + "keywords": [ + "MOD17", + "GPP", + "gross primary production", + "NPP", + "net primary production", + "MODIS", + "terrestrial productivity", + "carbon cycle", + "ecosystem productivity", + "NTSG", + "University of Montana" + ], + "creator": [ + { + "@type": "Organization", + "name": "Numerical Terradynamic Simulation Group (NTSG)", + "url": "https://www.umt.edu/numerical-terradynamic-simulation-group/" + } + ], + "provider": { + "@type": "Organization", + "name": "Numerical Terradynamic Simulation Group (NTSG), University of Montana", + "url": "https://www.umt.edu/numerical-terradynamic-simulation-group/" + }, + "publisher": { + "@type": "Organization", + "name": "University of Montana", + "url": "https://www.umt.edu/" + }, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "GPP", + "description": "Gross Primary Production", + "temporalCoverage": "2000-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Earth's vegetated land surface", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "NPP", + "description": "Net Primary Production", + "temporalCoverage": "2000-01-01/2013-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Earth's vegetated land surface", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "encodingFormat": [ + "application/x-hdf", + "image/tiff", + "application/netcdf" + ], + "conditionsOfAccess": "Access is provided via HTTP file listing at the dataset URL. Refer to the provider's data policies and downloading guidance on the hosting site.", + "isAccessibleForFree": true, + "distribution": [ + { + "@type": "DataDownload", + "name": "MOD17 products (directory listing)", + "contentUrl": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "MOD17 GeoTIFF products (typical distribution)", + "contentUrl": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/GeoTIFF/", + "encodingFormat": [ + "image/tiff" + ] + }, + { + "@type": "DataDownload", + "name": "MOD17 HDF-EOS products (typical distribution)", + "contentUrl": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/", + "encodingFormat": [ + "application/x-hdf" + ] + } + ], + "citation": [ + { + "@type": "CreativeWork", + "name": "MOD17 User’s Guide", + "publisher": { + "@type": "Organization", + "name": "Numerical Terradynamic Simulation Group, University of Montana" + }, + "sameAs": "https://scholarworks.umt.edu/ntsg_pubs/227/" + }, + { + "@type": "ScholarlyArticle", + "name": "A continuous satellite-derived measure of global terrestrial primary production", + "author": [ + { + "@type": "Person", + "name": "S. W. Running" + }, + { + "@type": "Person", + "name": "R. R. Nemani" + }, + { + "@type": "Person", + "name": "F. A. Heinsch" + }, + { + "@type": "Person", + "name": "M. Zhao" + }, + { + "@type": "Person", + "name": "M. Reeves" + }, + { + "@type": "Person", + "name": "H. Hashimoto" + } + ], + "datePublished": "2004", + "isPartOf": { + "@type": "Periodical", + "name": "BioScience" + }, + "volumeNumber": "54", + "issueNumber": "6", + "pagination": "547-560" + } + ] +} diff --git a/data/objects/summoned/generated/GPP_MOD17/webpage.jsonld b/data/objects/summoned/generated/GPP_MOD17/webpage.jsonld new file mode 100644 index 0000000..cf38ba8 --- /dev/null +++ b/data/objects/summoned/generated/GPP_MOD17/webpage.jsonld @@ -0,0 +1,40 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/", + "name": "GPP MOD17: Global Gross Primary Production and Net Primary Production", + "description": "Webpage for the GPP MOD17 dataset—global gross primary production (GPP) and net primary production (NPP) derived from the MOD17 algorithm, distributed by the Numerical Terradynamic Simulation Group (NTSG), University of Montana. The site provides a directory listing for MOD17 products (e.g., 8-day, monthly, annual) in GeoTIFF, HDF-EOS, and NetCDF formats.", + "url": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Numerical Terradynamic Simulation Group (NTSG), University of Montana", + "url": "https://www.umt.edu/numerical-terradynamic-simulation-group/" + }, + "about": { + "@type": "Dataset", + "name": "GPP MOD17", + "url": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/" + }, + "publisher": { + "@type": "Organization", + "name": "University of Montana", + "url": "https://www.umt.edu/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "GPP MOD17", + "url": "http://files.ntsg.umt.edu/data/NTSG_Products/MOD17/#dataset" + }, + "keywords": [ + "MOD17", + "GPP", + "gross primary production", + "NPP", + "net primary production", + "MODIS", + "NTSG", + "University of Montana" + ] +} diff --git a/data/objects/summoned/generated/GRACE-REC/grace-rec.jsonld b/data/objects/summoned/generated/GRACE-REC/grace-rec.jsonld new file mode 100644 index 0000000..4276aa7 --- /dev/null +++ b/data/objects/summoned/generated/GRACE-REC/grace-rec.jsonld @@ -0,0 +1,192 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://doi.org/10.6084/m9.figshare.7670849#dataset", + "name": "GRACE-REC: A reconstruction of climate-driven water storage changes over the last century", + "url": "https://figshare.com/articles/dataset/GRACE-REC_A_reconstruction_of_climate-driven_water_storage_changes_over_the_last_century/7670849", + "description": "GRACE-REC provides reconstructed terrestrial water storage (TWS) anomalies driven by climate variability, trained on GRACE observations and meteorological forcing data. The reconstruction is provided at 0.5° spatial resolution and is available at daily and monthly temporal scales over the period 1901 to present (with updates released regularly). The product is designed for analyses of long-term hydroclimate variability, drought and flood assessment, and interpretation of GRACE/GRACE-FO water storage records and gaps.", + "keywords": [ + "GRACE-REC", + "terrestrial water storage", + "TWS", + "water storage anomalies", + "hydrology", + "hydroclimate", + "drought", + "flood", + "GRACE", + "GRACE-FO", + "reconstruction", + "climate-driven", + "0.5 degree", + "monthly", + "daily", + "Figshare" + ], + "creator": [ + { + "@type": "Person", + "name": "Vincent Humphrey", + "affiliation": { + "@type": "Organization", + "name": "Institute for Atmospheric and Climate Science, ETH Zurich", + "url": "https://ethz.ch/en.html" + } + }, + { + "@type": "Person", + "name": "Lukas Gudmundsson", + "affiliation": { + "@type": "Organization", + "name": "Institute for Atmospheric and Climate Science, ETH Zurich", + "url": "https://ethz.ch/en.html" + } + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Terrestrial water storage anomaly", + "description": "Reconstructed climate-driven terrestrial water storage anomalies (TWSA) derived from statistical modeling calibrated to GRACE observations.", + "temporalCoverage": "1901-01-01/2019-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial water storage reconstruction", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": [ + "P1D", + "P1M" + ], + "spatialResolution": "0.5 degree" + }, + { + "@type": "PropertyValue", + "name": "Ensemble members", + "description": "Multiple ensemble realizations to quantify predictive uncertainty for reconstructed TWS anomalies.", + "temporalCoverage": "1901-01-01/2019-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial water storage reconstruction", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": [ + "P1D", + "P1M" + ], + "spatialResolution": "0.5 degree" + } + ], + "measurementTechnique": [ + "Statistical reconstruction calibrated with GRACE observations", + "Reconstruction driven by meteorological forcing datasets at daily and monthly scales" + ], + "encodingFormat": [ + "application/x-netcdf", + "application/zip", + "text/html" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "Figshare dataset landing page", + "description": "Dataset landing page and downloads hosted on Figshare.", + "contentUrl": "https://figshare.com/articles/dataset/GRACE-REC_A_reconstruction_of_climate-driven_water_storage_changes_over_the_last_century/7670849", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Figshare DOI landing page", + "description": "Persistent DOI landing page for the dataset on Figshare.", + "contentUrl": "https://doi.org/10.6084/m9.figshare.7670849", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "GRACE-REC: a reconstruction of climate-driven water storage changes over the last century", + "author": [ + { + "@type": "Person", + "name": "Vincent Humphrey" + }, + { + "@type": "Person", + "name": "Lukas Gudmundsson" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "datePublished": "2019", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-11-1153-2019" + } + ], + "sameAs": "https://doi.org/10.5194/essd-11-1153-2019" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Terrestrial water storage" + }, + { + "@type": "Thing", + "name": "Climate variability" + }, + { + "@type": "Thing", + "name": "Drought" + }, + { + "@type": "Thing", + "name": "Floods" + }, + { + "@type": "Thing", + "name": "GRACE satellite gravimetry" + } + ], + "sameAs": [ + "https://doi.org/10.6084/m9.figshare.7670849" + ] +} diff --git a/data/objects/summoned/generated/GRACE-REC/webpage.jsonld b/data/objects/summoned/generated/GRACE-REC/webpage.jsonld new file mode 100644 index 0000000..181138b --- /dev/null +++ b/data/objects/summoned/generated/GRACE-REC/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://figshare.com/articles/dataset/GRACE-REC_A_reconstruction_of_climate-driven_water_storage_changes_over_the_last_century/7670849", + "name": "GRACE-REC: A reconstruction of climate-driven water storage changes over the last century", + "description": "Webpage for GRACE-REC on Figshare—reconstructed terrestrial water storage (TWS) anomalies 1901 to present at 0.5° resolution, daily and monthly. By Vincent Humphrey and Lukas Gudmundsson (ETH Zurich). Published in Earth System Science Data (2019).", + "url": "https://figshare.com/articles/dataset/GRACE-REC_A_reconstruction_of_climate-driven_water_storage_changes_over_the_last_century/7670849", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "about": { + "@type": "Dataset", + "name": "GRACE-REC", + "url": "https://doi.org/10.6084/m9.figshare.7670849" + }, + "publisher": { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "GRACE-REC: A reconstruction of climate-driven water storage changes over the last century", + "url": "https://doi.org/10.6084/m9.figshare.7670849#dataset" + }, + "keywords": [ + "GRACE-REC", + "terrestrial water storage", + "hydrology", + "Figshare", + "ETH Zurich" + ] +} diff --git a/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/global-multi-layer-soil-moisture.jsonld b/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/global-multi-layer-soil-moisture.jsonld new file mode 100644 index 0000000..2b9e207 --- /dev/null +++ b/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/global-multi-layer-soil-moisture.jsonld @@ -0,0 +1,206 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://doi.org/10.6084/m9.figshare.13661312.v1#dataset", + "name": "Global Multi-layer Soil Moisture Products", + "url": "https://figshare.com/articles/dataset/Global_Multi-layer_Soil_Moisture_Products/13661312/1?file=26220602", + "description": "Global multi-layer soil moisture products covering 1970–2016 at 0.5° spatial resolution and monthly temporal resolution, provided for four soil depth layers (0–10 cm, 10–30 cm, 30–50 cm, 50–100 cm). The dataset provides global, gap-free soil moisture fields intended for large-scale hydrologic, climate, and land-surface applications.", + "keywords": [ + "soil moisture", + "multi-layer soil moisture", + "root-zone soil moisture", + "global", + "monthly", + "0.5 degree", + "soil hydrology", + "land surface", + "climate", + "Earth system", + "1970-2016", + "Figshare" + ], + "creator": [ + { + "@type": "Person", + "name": "Yaoping Wang", + "affiliation": { + "@type": "Organization", + "name": "Oak Ridge National Laboratory", + "url": "https://www.ornl.gov/" + } + }, + { + "@type": "Person", + "name": "Jiafu Mao", + "affiliation": { + "@type": "Organization", + "name": "Oak Ridge National Laboratory", + "url": "https://www.ornl.gov/" + } + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Soil moisture (0–10 cm)", + "description": "Monthly soil moisture for the 0–10 cm layer.", + "temporalCoverage": "1970-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "0.5 degree" + }, + { + "@type": "PropertyValue", + "name": "Soil moisture (10–30 cm)", + "description": "Monthly soil moisture for the 10–30 cm layer.", + "temporalCoverage": "1970-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "0.5 degree" + }, + { + "@type": "PropertyValue", + "name": "Soil moisture (30–50 cm)", + "description": "Monthly soil moisture for the 30–50 cm layer.", + "temporalCoverage": "1970-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "0.5 degree" + }, + { + "@type": "PropertyValue", + "name": "Soil moisture (50–100 cm)", + "description": "Monthly soil moisture for the 50–100 cm layer.", + "temporalCoverage": "1970-01-01/2016-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "0.5 degree" + } + ], + "encodingFormat": [ + "application/zip", + "application/x-netcdf", + "text/html" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "Figshare dataset landing page (DOI)", + "description": "Persistent DOI landing page for the dataset on Figshare.", + "contentUrl": "https://doi.org/10.6084/m9.figshare.13661312.v1", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Figshare dataset file access (version 1, file link)", + "description": "Direct access link to a dataset file hosted on Figshare (may require browser access controls).", + "contentUrl": "https://figshare.com/articles/dataset/Global_Multi-layer_Soil_Moisture_Products/13661312/1?file=26220602", + "encodingFormat": [ + "application/zip" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Development of observation-based global multilayer soil moisture products for 1970 to 2016", + "author": [ + { + "@type": "Person", + "name": "Yaoping Wang" + }, + { + "@type": "Person", + "name": "Jiafu Mao" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "datePublished": "2021", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-13-4385-2021" + } + ], + "sameAs": "https://doi.org/10.5194/essd-13-4385-2021" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Soil" + }, + { + "@type": "Thing", + "name": "Soil moisture" + }, + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Climate" + }, + { + "@type": "Thing", + "name": "Land surface processes" + } + ], + "sameAs": [ + "https://doi.org/10.6084/m9.figshare.13661312.v1" + ] +} diff --git a/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/webpage.jsonld b/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/webpage.jsonld new file mode 100644 index 0000000..605b349 --- /dev/null +++ b/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://figshare.com/articles/dataset/Global_Multi-layer_Soil_Moisture_Products/13661312", + "name": "Global Multi-layer Soil Moisture Products", + "description": "Webpage for the Global Multi-layer Soil Moisture Products dataset on Figshare—global soil moisture 1970–2016 at 0.5° resolution, monthly, four depth layers (0–10 cm, 10–30 cm, 30–50 cm, 50–100 cm). Authors: Yaoping Wang, Jiafu Mao (Oak Ridge National Laboratory). Published in Earth System Science Data.", + "url": "https://figshare.com/articles/dataset/Global_Multi-layer_Soil_Moisture_Products/13661312", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "about": { + "@type": "Dataset", + "name": "Global Multi-layer Soil Moisture Products", + "url": "https://doi.org/10.6084/m9.figshare.13661312.v1" + }, + "publisher": { + "@type": "Organization", + "name": "Figshare", + "url": "https://figshare.com/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "Global Multi-layer Soil Moisture Products", + "url": "https://doi.org/10.6084/m9.figshare.13661312.v1#dataset" + }, + "keywords": [ + "soil moisture", + "multi-layer", + "global", + "Figshare", + "Oak Ridge National Laboratory" + ] +} diff --git a/data/objects/summoned/generated/Global_Tree_Density/global-tree-density.jsonld b/data/objects/summoned/generated/Global_Tree_Density/global-tree-density.jsonld new file mode 100644 index 0000000..2aa5ea0 --- /dev/null +++ b/data/objects/summoned/generated/Global_Tree_Density/global-tree-density.jsonld @@ -0,0 +1,228 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://elischolar.library.yale.edu/yale_fes_data/1/#dataset", + "name": "Global Tree Density (Global tree density map)", + "description": "Global tree density at a global scale provided as two spatially continuous raster maps of tree density. One map was generated using biome-level linear regression models and applied at the biome scale; the second map was generated using ecoregion-level linear regression models and applied at the ecoregion scale. The models were built using over 420,000 ground-sourced estimates of tree density and predictor variables spanning vegetative, climatic, topographic, and anthropogenic factors. The creators note that transitions at biome/ecoregion boundaries may appear abrupt and that estimates are generally more robust at country scale (or larger) than at individual pixel scale. The primary distribution is a zipped ArcGIS File Geodatabase package containing both raster models plus supporting ArcGIS layer and map-document files; additional files include a revision adding predictions for small islands and a WGS84 GeoTIFF derivative for the revision.", + "url": "https://elischolar.library.yale.edu/yale_fes_data/1/", + "creator": [ + { + "@type": "Person", + "name": "T. W. Crowther", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + }, + { + "@type": "Person", + "name": "H. B. Glick", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + }, + { + "@type": "Person", + "name": "K. R. Covey", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + }, + { + "@type": "Person", + "name": "G. Amatulli", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + }, + { + "@type": "Person", + "name": "M.-N. Tuanmu", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + }, + { + "@type": "Person", + "name": "W. Jetz", + "affiliation": { + "@type": "Organization", + "name": "Yale University" + } + } + ], + "publisher": { + "@type": "Organization", + "name": "EliScholar (Yale School of the Environment)", + "url": "https://elischolar.library.yale.edu/yale_fes_data/", + "parentOrganization": { + "@type": "Organization", + "name": "Yale University", + "url": "https://www.yale.edu/" + } + }, + "datePublished": "2015-09-02", + "keywords": [ + "tree density", + "forest", + "global map", + "biome", + "ecoregion", + "biodiversity", + "conservation", + "GIS", + "ArcGIS", + "GeoTIFF", + "spatial modeling" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Tree density (biome-level model)", + "description": "Biome-level regression model predictions applied at biome scale.", + "temporalCoverage": "2015-09-02", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "Best suited for country-scale (or larger) summaries; pixel-level precision is less reliable per creators' guidance." + }, + { + "@type": "PropertyValue", + "name": "Tree density (ecoregion-level model)", + "description": "Ecoregion-level regression model predictions applied at ecoregion scale.", + "temporalCoverage": "2015-09-02", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "not detected", + "spatialResolution": "Best suited for country-scale (or larger) summaries; pixel-level precision is less reliable per creators' guidance." + } + ], + "measurementTechnique": [ + "Compilation of >420,000 ground-sourced tree density estimates", + "Linear regression modeling using vegetative, climatic, topographic, and anthropogenic predictors", + "Modeling in R; mapping in R and ArcGIS 10.1" + ], + "funding": [ + { + "@type": "Organization", + "name": "Yale Climate and Energy Institute" + }, + { + "@type": "Organization", + "name": "British Ecological Society" + } + ], + "license": "https://creativecommons.org/licenses/by-nd/4.0/", + "encodingFormat": [ + "application/zip", + "application/x-esri-geodatabase", + "image/tiff", + "application=geotiff" + ], + "version": "2015-09-02 release; includes biome-level and ecoregion-level models; additional files provide Revision_01 (small islands) and a WGS84 GeoTIFF derivative for Revision_01.", + "distribution": [ + { + "@type": "DataDownload", + "name": "Primary download (ZIP; ArcGIS File Geodatabase + supporting ArcGIS files)", + "description": "Primary dataset package (zipped) containing an ArcGIS File Geodatabase (.gdb) with two rasters (biome-level and ecoregion-level), plus supporting ArcGIS layer files (.lyr) and a map document (.mxd).", + "contentUrl": "https://elischolar.library.yale.edu/context/yale_fes_data/article/1000/type/native/viewcontent", + "encodingFormat": [ + "application/zip" + ] + }, + { + "@type": "DataDownload", + "name": "Revision 01 (small islands) ZIP", + "description": "Revision_01 adds tree density predictions for small islands not included in the primary download; follows the original file structure.", + "contentUrl": "https://elischolar.library.yale.edu/cgi/viewcontent.cgi?article=1000&context=yale_fes_data&filename=0&type=additional", + "encodingFormat": [ + "application/zip" + ] + }, + { + "@type": "DataDownload", + "name": "Revision 01 WGS84 GeoTIFF ZIP", + "description": "Revision_01 biome-level model stored in WGS84 GeoTIFF format (reprojected from Goode Homolosine using nearest-neighbor resampling); includes the primary .tif and visualization support files.", + "contentUrl": "https://elischolar.library.yale.edu/cgi/viewcontent.cgi?article=1000&context=yale_fes_data&filename=1&type=additional", + "encodingFormat": [ + "application/zip" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Mapping tree density at a global scale", + "author": [ + { + "@type": "Person", + "name": "T. W. Crowther" + }, + { + "@type": "Person", + "name": "H. B. Glick" + }, + { + "@type": "Person", + "name": "K. R. Covey" + }, + { + "@type": "Person", + "name": "et al." + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Nature" + }, + "datePublished": "2015-09-10", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/nature14967" + } + ], + "sameAs": "https://doi.org/10.1038/nature14967" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Tree density" + }, + { + "@type": "Thing", + "name": "Forests" + }, + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Biodiversity" + }, + { + "@type": "Thing", + "name": "Global environmental mapping" + } + ] +} diff --git a/data/objects/summoned/generated/Global_Tree_Density/webpage.jsonld b/data/objects/summoned/generated/Global_Tree_Density/webpage.jsonld new file mode 100644 index 0000000..6861d6a --- /dev/null +++ b/data/objects/summoned/generated/Global_Tree_Density/webpage.jsonld @@ -0,0 +1,50 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://elischolar.library.yale.edu/yale_fes_data/1/#webpage", + "name": "Global tree density map", + "description": "This webpage in EliScholar (Yale's institutional repository) hosts the Global tree density map dataset associated with Crowther et al. (2015). It describes two global raster maps of tree density (biome-level and ecoregion-level models), documents the underlying methodology (ground-based plot data and regression modeling), provides viewing/format notes for GIS use (ArcGIS File Geodatabase and GeoTIFF derivatives), and offers download access to the primary dataset package and additional revised/alternative-format files.", + "url": "https://elischolar.library.yale.edu/yale_fes_data/1/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "@id": "https://elischolar.library.yale.edu/#website", + "name": "EliScholar", + "url": "https://elischolar.library.yale.edu/", + "description": "Yale's digital repository for scholarly works and research outputs." + }, + "publisher": { + "@type": "Organization", + "name": "Yale School of the Environment", + "url": "https://elischolar.library.yale.edu/yale_fes_data/", + "parentOrganization": { + "@type": "Organization", + "name": "Yale University", + "url": "https://www.yale.edu/" + } + }, + "keywords": [ + "tree density", + "forest", + "global", + "biodiversity", + "GIS", + "ArcGIS", + "File Geodatabase", + "GeoTIFF", + "ecoregion", + "biome", + "spatial model", + "Crowther", + "Jetz" + ], + "about": { + "@type": "Dataset", + "@id": "https://elischolar.library.yale.edu/yale_fes_data/1/#dataset" + }, + "mainEntity": { + "@type": "Dataset", + "@id": "https://elischolar.library.yale.edu/yale_fes_data/1/#dataset" + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/HydroSHEDS/hydrosheds.jsonld b/data/objects/summoned/generated/HydroSHEDS/hydrosheds.jsonld new file mode 100644 index 0000000..4fe7a98 --- /dev/null +++ b/data/objects/summoned/generated/HydroSHEDS/hydrosheds.jsonld @@ -0,0 +1,316 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.hydrosheds.org/#dataset", + "name": "HydroSHEDS (Hydrological data and maps based on Shuttle Elevation Derivatives at multiple Scales)", + "url": "https://www.hydrosheds.org/", + "description": "HydroSHEDS provides freely available global hydrographic and hydrological baseline data layers derived primarily from spaceborne elevation data (notably SRTM) and related processing. The HydroSHEDS product suite supports hydro-ecological research and applications worldwide and includes gridded core layers (e.g., void-filled DEM, hydrologically conditioned DEM, flow direction, flow accumulation, flow length, land mask/sinks) as well as derived hydrographic products such as catchment and sub-basin boundaries, river networks, and lakes. Products are available at multiple resolutions and scales (e.g., 3 arc-second, 15 arc-second, 30 arc-second and coarser) and are distributed in standard GIS formats for regional and global analysis.", + "keywords": [ + "HydroSHEDS", + "hydrography", + "hydrology", + "watersheds", + "catchments", + "drainage basins", + "river networks", + "stream network", + "flow direction", + "flow accumulation", + "flow length", + "hydrologically conditioned DEM", + "SRTM", + "digital elevation model", + "freshwater", + "GIS", + "GeoTIFF", + "shapefile" + ], + "creator": [ + { + "@type": "Organization", + "name": "World Wildlife Fund (WWF)", + "url": "https://www.worldwildlife.org/" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "HydroSHEDS Project", + "url": "https://www.hydrosheds.org/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "World Wildlife Fund (WWF)", + "url": "https://www.worldwildlife.org/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Catchment and Sub-Basin Boundaries", + "description": "Vector catchment and sub-basin boundary products derived from HydroSHEDS hydrography.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "River networks", + "description": "Vector river/stream network products derived from HydroSHEDS hydrography.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Lakes and water bodies", + "description": "Lake and water body products distributed as part of the HydroSHEDS product suite.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Void-filled DEM", + "description": "Digital elevation model underpinning HydroSHEDS core layers.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Conditioned DEM", + "description": "Hydrologically conditioned DEM used to derive flow products.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Flow direction", + "description": "Drainage direction grid derived from the conditioned DEM.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Flow accumulation", + "description": "Upstream contributing area / upstream cell count derived from flow direction.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Flow length", + "description": "Upstream and/or downstream flow length derived from flow direction.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + }, + { + "@type": "PropertyValue", + "name": "Land mask and sinks", + "description": "Land/ocean mask and coastal/inland sink indicators used in HydroSHEDS processing.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global and regional hydrographic products; product-specific coverage varies" + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second", + "15 arc-second", + "30 arc-second" + ] + } + ], + "encodingFormat": [ + "image/tiff", + "application/geotiff", + "application/zip", + "application/x-esri-shapefile", + "application/vnd.esri.filegdb" + ], + "license": "https://data.hydrosheds.org/file/technical-documentation/HydroSHEDS_TechDoc_v1_4.pdf", + "distribution": [ + { + "@type": "DataDownload", + "name": "HydroSHEDS website (overview)", + "description": "HydroSHEDS main website with product overview and navigation to downloads.", + "contentUrl": "https://www.hydrosheds.org/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "HydroSHEDS core data downloads (GeoTIFF)", + "description": "Download page for HydroSHEDS core raster layers (e.g., DEM, conditioned DEM, flow direction, flow accumulation, flow length, land mask) in multiple resolutions, provided as GeoTIFF tiles and regional/global bundles.", + "contentUrl": "https://www.hydrosheds.org/hydrosheds-core-downloads", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "HydroSHEDS products index", + "description": "Products landing page providing access to HydroSHEDS datasets (core layers and derived hydrographic products).", + "contentUrl": "https://www.hydrosheds.org/products", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "HydroSHEDS technical documentation and license agreement", + "description": "Technical documentation for HydroSHEDS v1 including the HydroSHEDS v1 license agreement (Appendix A).", + "contentUrl": "https://data.hydrosheds.org/file/technical-documentation/HydroSHEDS_TechDoc_v1_4.pdf", + "encodingFormat": [ + "application/pdf" + ] + } + ], + "measurementTechnique": [ + "Hydrographic derivation from digital elevation models (primarily SRTM) including hydrologic conditioning and flow routing", + "Derivation of flow direction, flow accumulation, and related hydrological grids from conditioned elevation data", + "Generation of hydrographic features (basins/catchments, river networks, lakes) from processed hydrographic foundations" + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "New global hydrography derived from spaceborne elevation data", + "author": [ + { + "@type": "Person", + "name": "B. Lehner" + }, + { + "@type": "Person", + "name": "K. Verdin" + }, + { + "@type": "Person", + "name": "A. Jarvis" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Eos, Transactions, American Geophysical Union" + }, + "datePublished": "2008", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1029/2008EO100001" + } + ], + "sameAs": "https://doi.org/10.1029/2008EO100001" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Hydrography" + }, + { + "@type": "Thing", + "name": "Watersheds" + }, + { + "@type": "Thing", + "name": "River networks" + }, + { + "@type": "Thing", + "name": "Catchments" + }, + { + "@type": "Thing", + "name": "Digital elevation models" + }, + { + "@type": "Thing", + "name": "Freshwater conservation" + } + ], + "sameAs": [ + "https://www.worldwildlife.org/our-work/science/hydrosheds/" + ] +} diff --git a/data/objects/summoned/generated/HydroSHEDS/webpage.jsonld b/data/objects/summoned/generated/HydroSHEDS/webpage.jsonld new file mode 100644 index 0000000..32edacb --- /dev/null +++ b/data/objects/summoned/generated/HydroSHEDS/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.hydrosheds.org/", + "name": "HydroSHEDS: Hydrological data and maps based on Shuttle Elevation Derivatives at multiple Scales", + "description": "Webpage for HydroSHEDS—global hydrographic and hydrological baseline data (catchment boundaries, river networks, lakes, flow direction, flow accumulation, DEMs) at multiple resolutions, derived from SRTM and distributed by WWF and the HydroSHEDS project.", + "url": "https://www.hydrosheds.org/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "World Wildlife Fund (WWF)", + "url": "https://www.worldwildlife.org/" + }, + "about": { + "@type": "Dataset", + "name": "HydroSHEDS", + "url": "https://www.hydrosheds.org/" + }, + "publisher": { + "@type": "Organization", + "name": "World Wildlife Fund (WWF)", + "url": "https://www.worldwildlife.org/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "HydroSHEDS (Hydrological data and maps based on Shuttle Elevation Derivatives at multiple Scales)", + "url": "https://www.hydrosheds.org/#dataset" + }, + "keywords": [ + "HydroSHEDS", + "hydrography", + "hydrology", + "watersheds", + "WWF" + ] +} diff --git a/data/objects/summoned/generated/Hydrography90m/hydrography90m.jsonld b/data/objects/summoned/generated/Hydrography90m/hydrography90m.jsonld new file mode 100644 index 0000000..5cba286 --- /dev/null +++ b/data/objects/summoned/generated/Hydrography90m/hydrography90m.jsonld @@ -0,0 +1,354 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://hydrography.org/#dataset", + "name": "Hydrography90m", + "url": "https://hydrography.org/", + "description": "Hydrography90m is a high-resolution global hydrographic dataset derived from the MERIT Hydro digital elevation model at 3 arc-second (~90 m at the equator). It provides a globally seamless, standardized representation of stream channels and drainage basins with associated topographic and topological attributes for flow routing and network analysis. Products include stream and basin layers, sub-catchments linked to stream segments, stream order and slope metrics, flow-routing topology via unique segment identifiers, and tiled raster/vector layers suitable for large-scale hydrology, geomorphology, ecology, and environmental modeling applications.", + "keywords": [ + "Hydrography90m", + "hydrography", + "hydrology", + "drainage basins", + "catchments", + "sub-catchments", + "river networks", + "stream network", + "flow routing", + "stream order", + "stream slope", + "topographic attributes", + "topological attributes", + "MERIT Hydro", + "DEM", + "90 m", + "global" + ], + "creator": [ + { + "@type": "Person", + "name": "Giuseppe Amatulli" + }, + { + "@type": "Person", + "name": "Jaime R. Garcia Marquez" + }, + { + "@type": "Person", + "name": "Tushar Sethi" + }, + { + "@type": "Person", + "name": "Jens Kiesel" + }, + { + "@type": "Person", + "name": "Afroditi Grigoropoulou" + }, + { + "@type": "Person", + "name": "Maria M. Üblacker" + }, + { + "@type": "Person", + "name": "Longzhu Q. Shen" + }, + { + "@type": "Person", + "name": "Sami Domisch" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Hydrography.org", + "url": "https://hydrography.org/" + }, + { + "@type": "Organization", + "name": "Leibniz-Institute of Freshwater Ecology and Inland Fisheries (IGB)", + "url": "https://www.igb-berlin.de/en" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Leibniz-Institute of Freshwater Ecology and Inland Fisheries (IGB)", + "url": "https://www.igb-berlin.de/en" + } + ], + "datePublished": "2022-08-09", + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Stream channels", + "description": "Global stream channel network with unique segment identifiers and topology attributes.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Drainage basins", + "description": "Global drainage basin delineations derived from flow routing.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Sub-catchments", + "description": "Sub-catchment polygons linked to individual stream segments.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Network topology", + "description": "Upstream/downstream connectivity and routing attributes for stream segments.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Stream order", + "description": "Stream order metrics computed for the network.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Stream slope", + "description": "Slope metrics computed along stream segments.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + }, + { + "@type": "PropertyValue", + "name": "Distance metrics", + "description": "In-stream and among-stream distance measures for network analysis.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": [ + "3 arc-second (~90 m at the equator)", + "90 m" + ] + } + ], + "measurementTechnique": [ + "Derivation of hydrographic networks and basins from MERIT Hydro DEM (~90 m) using hydrologic conditioning, flow routing, and network extraction", + "Computation of stream topology, stream order, and stream slope metrics for global hydrographic analysis" + ], + "encodingFormat": [ + "application/zip", + "image/tiff", + "application/geotiff", + "application/x-esri-shapefile", + "application/octet-stream", + "text/html" + ], + "license": "https://creativecommons.org/licenses/by-nc/4.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "Hydrography90m website (project landing page)", + "description": "Project website for Hydrography90m with documentation and navigation to layers and downloads.", + "contentUrl": "https://hydrography.org/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Hydrography90m layers overview", + "description": "Overview of Hydrography90m layers available for download.", + "contentUrl": "https://hydrography.org/hydrography90m/hydrography90m_layers", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Hydrography90m batch download script", + "description": "Scripted procedure to download tiled raster and vector layers of Hydrography90m.", + "contentUrl": "https://hydrography.org/hydrography90m/hydrography90m_download_script", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "IGB FRED dataset landing page (DOI)", + "description": "Institutional dataset record and distribution entry for Hydrography90m hosted by IGB (FRED).", + "contentUrl": "https://doi.org/10.18728/igb-fred-762.1", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Hydrography90m: A new high-resolution global hydrographic dataset", + "author": [ + { + "@type": "Person", + "name": "Giuseppe Amatulli" + }, + { + "@type": "Person", + "name": "Jaime R. Garcia Marquez" + }, + { + "@type": "Person", + "name": "Tushar Sethi" + }, + { + "@type": "Person", + "name": "Jens Kiesel" + }, + { + "@type": "Person", + "name": "Afroditi Grigoropoulou" + }, + { + "@type": "Person", + "name": "Maria M. Üblacker" + }, + { + "@type": "Person", + "name": "Longzhu Q. Shen" + }, + { + "@type": "Person", + "name": "Sami Domisch" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Earth System Science Data" + }, + "datePublished": "2022", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/essd-14-4525-2022" + } + ], + "sameAs": "https://doi.org/10.5194/essd-14-4525-2022" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Hydrography" + }, + { + "@type": "Thing", + "name": "Drainage basins" + }, + { + "@type": "Thing", + "name": "River networks" + }, + { + "@type": "Thing", + "name": "Flow routing" + }, + { + "@type": "Thing", + "name": "Global environmental mapping" + } + ], + "sameAs": [ + "https://www.igb-berlin.de/en/hydrography90m-dataset", + "https://doi.org/10.18728/igb-fred-762.1" + ] +} diff --git a/data/objects/summoned/generated/Hydrography90m/webpage.jsonld b/data/objects/summoned/generated/Hydrography90m/webpage.jsonld new file mode 100644 index 0000000..86ebc5b --- /dev/null +++ b/data/objects/summoned/generated/Hydrography90m/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://hydrography.org/", + "name": "Hydrography90m: High-resolution global hydrographic dataset", + "description": "Webpage for Hydrography90m—global hydrographic dataset at ~90 m (3 arc-second) from MERIT Hydro: stream channels, drainage basins, sub-catchments, stream order and slope, flow-routing topology. By Amatulli et al.; IGB/hydrography.org. Published in Earth System Science Data (2022).", + "url": "https://hydrography.org/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Hydrography.org", + "url": "https://hydrography.org/" + }, + "about": { + "@type": "Dataset", + "name": "Hydrography90m", + "url": "https://hydrography.org/" + }, + "publisher": { + "@type": "Organization", + "name": "Leibniz-Institute of Freshwater Ecology and Inland Fisheries (IGB)", + "url": "https://www.igb-berlin.de/en" + }, + "mainEntity": { + "@type": "Dataset", + "name": "Hydrography90m", + "url": "https://hydrography.org/#dataset" + }, + "keywords": [ + "Hydrography90m", + "hydrography", + "hydrology", + "IGB", + "MERIT Hydro" + ] +} diff --git a/data/objects/summoned/generated/MERIT_DEM/merit-dem.jsonld b/data/objects/summoned/generated/MERIT_DEM/merit-dem.jsonld new file mode 100644 index 0000000..ccdfe5d --- /dev/null +++ b/data/objects/summoned/generated/MERIT_DEM/merit-dem.jsonld @@ -0,0 +1,188 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://global-hydrodynamics.github.io/MERIT_DEM/#dataset", + "name": "MERIT DEM (Multi-Error-Removed Improved-Terrain Digital Elevation Model)", + "description": "MERIT DEM is a high-accuracy global digital elevation model (DEM) at 3 arc-second resolution (~90 m at the equator), developed by removing multiple error components from existing spaceborne DEMs. The developers separated and eliminated absolute bias, stripe noise, speckle noise, and tree height bias using multiple satellite datasets and filtering techniques. MERIT DEM was created by processing baseline DEMs including NASA SRTM3 DEM v2.1, JAXA AW3D-30m DEM v1, and Viewfinder Panoramas' DEM. After error removal, land areas mapped with 2 m or better vertical accuracy increased from 39% to 58%. The dataset represents terrain elevations in meters referenced to WGS84 horizontal datum and the EGM96 geoid, covering global land areas between 90°N and 60°S. Data are organized as 5°×5° tiles (6000×6000 pixels) and distributed in 30°×30° packages; filenames encode the center of the lower-left pixel (e.g., \"n30w120_dem.tif\" covers N30–N35 and W120–W115) and package names encode the lower-left corner of the 30°×30° domain (e.g., \"dem_tif_n30w120.tar\" contains tiles for N30–N60 and W120–W090).", + "url": "https://global-hydrodynamics.github.io/MERIT_DEM/", + "keywords": [ + "topography", + "Digital Elevation Model", + "DEM", + "terrain elevation", + "geoscience", + "hydrology", + "SRTM", + "AW3D", + "global elevation", + "EGM96", + "WGS84", + "MERIT" + ], + "creator": [ + { + "@type": "Person", + "name": "Dai Yamazaki", + "email": "mailto:yamadai@iis.u-tokyo.ac.jp", + "affiliation": { + "@type": "Organization", + "name": "Institute of Industrial Science, The University of Tokyo", + "url": "https://www.iis.u-tokyo.ac.jp/en/" + } + }, + { + "@type": "Organization", + "name": "Institute of Industrial Science, The University of Tokyo", + "url": "https://www.iis.u-tokyo.ac.jp/en/" + } + ], + "publisher": { + "@type": "Organization", + "name": "The University of Tokyo", + "url": "https://www.u-tokyo.ac.jp/en/" + }, + "datePublished": "2018-10-15", + "version": "v1.0.3", + "license": [ + { + "@type": "CreativeWork", + "name": "Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)", + "url": "https://creativecommons.org/licenses/by-nc/4.0/" + }, + { + "@type": "CreativeWork", + "name": "Open Data Commons Open Database License 1.0 (ODbL 1.0)", + "url": "https://opendatacommons.org/licenses/odbl/1-0/" + } + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Elevation", + "unitText": "meter", + "description": "Terrain elevation in meters referenced to WGS84 and the EGM96 geoid.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global land areas between 90°N and 60°S", + "geo": { + "@type": "GeoShape", + "box": "-180,-60 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "not detected" + } + ], + "measurementTechnique": [ + "Error removal from baseline spaceborne DEMs (absolute bias, stripe noise, speckle noise, tree height bias)", + "Filtering and correction using multiple satellite and ancillary datasets" + ], + "encodingFormat": [ + "application/octet-stream (ESRI EHdr/FLT raster with HDR", + "4-byte float", + "little endian)", + "image/tiff", + "application=geotiff", + "application/octet-stream (MRR", + "MapInfo Pro raster)" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "MERIT DEM official product page", + "description": "Current official product page describing MERIT DEM, registration, download access, version, data format, coverage, license terms, and citation guidance.", + "encodingFormat": [ + "text/html" + ], + "contentUrl": "https://global-hydrodynamics.github.io/MERIT_DEM/" + }, + { + "@type": "DataDownload", + "name": "MERIT DEM download access", + "description": "Provider download access page reached after completing the MERIT DEM registration and license agreement process; current provider documentation states data are distributed in GeoTIFF format.", + "encodingFormat": [ + "text/html" + ], + "contentUrl": "https://global-hydrodynamics.github.io/MERIT_DEM/" + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "A high accuracy map of global terrain elevations", + "author": [ + { + "@type": "Person", + "name": "D. Yamazaki" + }, + { + "@type": "Person", + "name": "D. Ikeshima" + }, + { + "@type": "Person", + "name": "R. Tawatari" + }, + { + "@type": "Person", + "name": "T. Yamaguchi" + }, + { + "@type": "Person", + "name": "F. O'Loughlin" + }, + { + "@type": "Person", + "name": "J. C. Neal" + }, + { + "@type": "Person", + "name": "C. C. Sampson" + }, + { + "@type": "Person", + "name": "S. Kanae" + }, + { + "@type": "Person", + "name": "P. D. Bates" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Geophysical Research Letters" + }, + "datePublished": "2017", + "pagination": "5844-5853", + "volumeNumber": "44", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1002/2017GL072874" + } + ], + "sameAs": "https://doi.org/10.1002/2017GL072874" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Terrain elevation" + }, + { + "@type": "Thing", + "name": "Topography" + }, + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Geoscience applications" + } + ] +} diff --git a/data/objects/summoned/generated/MERIT_DEM/webpage.jsonld b/data/objects/summoned/generated/MERIT_DEM/webpage.jsonld new file mode 100644 index 0000000..1c7a364 --- /dev/null +++ b/data/objects/summoned/generated/MERIT_DEM/webpage.jsonld @@ -0,0 +1,71 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://global-hydrodynamics.github.io/MERIT_DEM/", + "name": "MERIT DEM: Multi-Error-Removed Improved-Terrain DEM", + "description": "Webpage for the MERIT DEM (Multi-Error-Removed Improved-Terrain Digital Elevation Model) dataset. MERIT DEM is a high-accuracy global digital elevation model at 3 arc-second resolution (~90 m at the equator), developed by removing multiple error components from existing spaceborne DEMs. The site provides information about the dataset, download instructions, licensing, and citation information.", + "url": "https://global-hydrodynamics.github.io/MERIT_DEM/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Global Hydrodynamics Lab Yamazaki Lab", + "url": "https://global-hydrodynamics.github.io/" + }, + "about": { + "@type": "Dataset", + "name": "MERIT DEM (Multi-Error-Removed Improved-Terrain Digital Elevation Model)", + "url": "https://global-hydrodynamics.github.io/MERIT_DEM/" + }, + "publisher": { + "@type": "Organization", + "name": "The University of Tokyo", + "subOrganization": { + "@type": "Organization", + "name": "Institute of Industrial Science" + }, + "url": "https://www.u-tokyo.ac.jp/en/" + }, + "datePublished": "2018-10-15", + "dateModified": "2018-10-15", + "lastReviewed": "2018-10-15", + "mainEntity": { + "@type": "Dataset", + "name": "MERIT DEM (Multi-Error-Removed Improved-Terrain Digital Elevation Model)", + "url": "https://global-hydrodynamics.github.io/MERIT_DEM/" + }, + "breadcrumb": { + "@type": "BreadcrumbList", + "itemListElement": [ + { + "@type": "ListItem", + "position": 1, + "name": "Global Hydrodynamics Lab Yamazaki Lab", + "item": "https://global-hydrodynamics.github.io/" + }, + { + "@type": "ListItem", + "position": 2, + "name": "Products", + "item": "https://global-hydrodynamics.github.io/" + }, + { + "@type": "ListItem", + "position": 3, + "name": "MERIT DEM", + "item": "https://global-hydrodynamics.github.io/MERIT_DEM/" + } + ] + }, + "keywords": [ + "MERIT DEM", + "Digital Elevation Model", + "topography", + "terrain elevation", + "geoscience", + "hydrology", + "global DEM", + "SRTM", + "AW3D" + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/annual-nlcd.jsonld b/data/objects/summoned/generated/MRLC_NLCD/annual-nlcd.jsonld new file mode 100644 index 0000000..fb2888c --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/annual-nlcd.jsonld @@ -0,0 +1,207 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data/project/annual-nlcd#dataset", + "name": "Annual National Land Cover Database (Annual NLCD) CONUS Collection 1.1", + "description": "Annual NLCD provides an annual record of land cover and related land surface change products for the conterminous United States derived from the Landsat satellite record using an integrated framework of modern modeling approaches. Collection 1.1 extends coverage through 2024 and includes six raster science products: Land Cover, Land Cover Change, Land Cover Confidence, Fractional Impervious Surface, Impervious Descriptor, and Spectral Change Day of Year.", + "url": "https://www.mrlc.gov/data/project/annual-nlcd", + "creator": { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS) / MRLC Consortium", + "url": "https://www.mrlc.gov/partners" + }, + "publisher": { + "@type": "Organization", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "version": "Collection 1.1 (ver. 1.1, June 2025)", + "keywords": [ + "Annual NLCD", + "NLCD", + "land cover", + "land change", + "impervious surface", + "tree canopy", + "Landsat", + "remote sensing" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Land Cover", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Land Cover Change", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Land Cover Confidence", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Fractional Impervious Surface", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Impervious Descriptor", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Spectral Change Day of Year", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Conterminous United States (CONUS)", + "geo": { + "@type": "GeoShape", + "box": "-125,24 -66,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + } + ], + "measurementTechnique": [ + "Landsat remote sensing", + "Land cover classification and change detection using modern modeling approaches (including deep learning and time-series analysis)" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "citation": [ + { + "@type": "CreativeWork", + "name": "U.S. Geological Survey (USGS), 2024, Annual NLCD Collection 1 Science Products (ver. 1.1, June 2025): U.S. Geological Survey data release, https://doi.org/10.5066/P94UXNTS", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5066/P94UXNTS" + }, + "sameAs": "https://doi.org/10.5066/P94UXNTS" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "Annual NLCD Collection 1.1 (ScienceBase data release)", + "contentUrl": "https://www.sciencebase.gov/catalog/item/655ceb8ad34ee4b6e05cc51a", + "description": "Authoritative distribution for Annual NLCD Collection 1.1, including metadata and product package structure." + }, + { + "@type": "DataDownload", + "name": "MRLC OGC Services (WMS/WCS) for Annual NLCD", + "contentUrl": "https://www.mrlc.gov/data-services-page", + "description": "OGC WMS/WCS endpoints for Annual NLCD products (access via GIS clients)." + }, + { + "@type": "DataDownload", + "name": "MRLC Viewer (interactive subsetting and downloads)", + "contentUrl": "https://www.mrlc.gov/viewer/", + "description": "Interactive tool for visualizing and downloading NLCD products for custom extents." + } + ], + "encodingFormat": [ + "application/zip", + "image/tiff", + "application=geotiff", + "application/octet-stream" + ], + "isPartOf": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "about": [ + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Land use" + }, + { + "@type": "Thing", + "name": "Land change" + } + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/datacatalog.jsonld b/data/objects/summoned/generated/MRLC_NLCD/datacatalog.jsonld new file mode 100644 index 0000000..c4e0439 --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/datacatalog.jsonld @@ -0,0 +1,90 @@ +{ + "@context": "https://schema.org/", + "@type": "DataCatalog", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data#catalog", + "name": "MRLC Data Catalog", + "description": "Catalog of land cover, land change, rangeland vegetation component, and related remote-sensing products produced and distributed by the Multi-Resolution Land Characteristics (MRLC) Consortium for the United States and North America. Includes Annual NLCD, RCMAP, Exotic Annual Grass products, NALCMS, and legacy NLCD products, with access via direct downloads, interactive tools, and OGC web services.", + "url": "https://www.mrlc.gov/data", + "publisher": { + "@type": "Organization", + "@id": "https://www.mrlc.gov/#org", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "creator": { + "@type": "Organization", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/partners" + }, + "keywords": [ + "land cover", + "land use", + "land change", + "NLCD", + "Annual NLCD", + "tree canopy", + "impervious surface", + "rangeland", + "RCMAP", + "Exotic Annual Grass", + "NALCMS", + "remote sensing", + "Landsat" + ], + "about": [ + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Land use" + }, + { + "@type": "Thing", + "name": "Land change" + }, + { + "@type": "Thing", + "name": "Remote sensing" + } + ], + "dataset": [ + { + "@id": "https://www.mrlc.gov/data/project/annual-nlcd#dataset" + }, + { + "@id": "https://www.mrlc.gov/data/project/rcmap#dataset" + }, + { + "@id": "https://www.mrlc.gov/data/type/exotic-annual-grass#dataset" + }, + { + "@id": "https://data.usgs.gov/datacatalog/data/USGS:74edd739-1584-41c3-bf08-0274681a779b#dataset" + }, + { + "@id": "https://www.mrlc.gov/data/type/legacy-nlcd#dataset" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "MRLC Data Download Interface", + "contentUrl": "https://www.mrlc.gov/data", + "description": "Primary MRLC landing page for browsing and downloading MRLC datasets and products." + }, + { + "@type": "DataDownload", + "name": "MRLC OGC Web Services (WMS/WCS)", + "contentUrl": "https://www.mrlc.gov/data-services-page", + "description": "Access MRLC datasets via OGC Web Map Service (WMS) and Web Coverage Service (WCS) endpoints." + }, + { + "@type": "DataDownload", + "name": "MRLC Tools", + "contentUrl": "https://www.mrlc.gov/tools", + "description": "Interactive tools for visualization, subsetting, and analysis (MRLC Viewer, Rangeland Viewer, EVA Tool)." + } + ] +} \ No newline at end of file diff --git a/data/objects/summoned/generated/MRLC_NLCD/exotic-annual-grass.jsonld b/data/objects/summoned/generated/MRLC_NLCD/exotic-annual-grass.jsonld new file mode 100644 index 0000000..771b77a --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/exotic-annual-grass.jsonld @@ -0,0 +1,199 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data/type/exotic-annual-grass#dataset", + "name": "Exotic Annual Grass (EAG) Fractional Cover (MRLC)", + "description": "The Exotic Annual Grass (EAG) dataset provides frequent (weekly, during the core growing season) early estimates of fractional cover for multiple exotic annual grass targets and one native perennial grass species in arid and semi-arid rangelands of the western United States. Each release includes fractional cover maps and corresponding confidence maps for multiple species/groups (including cheatgrass and other Bromus species) generated using field observations, HLS NDVI, environmental drivers, and machine learning methods.", + "url": "https://www.mrlc.gov/data/type/exotic-annual-grass", + "creator": { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS) / MRLC Consortium", + "url": "https://www.mrlc.gov/partners" + }, + "publisher": { + "@type": "Organization", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "keywords": [ + "Exotic Annual Grass", + "EAG", + "cheatgrass", + "invasive species", + "fractional cover", + "rangelands", + "remote sensing", + "machine learning" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "EAG fractional cover (multiple species group)", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Cheatgrass (Bromus tectorum) fractional cover", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Other Bromus spp. fractional cover (Field brome + Japanese brome)", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Medusahead (Taeniatherum caput-medusae) fractional cover", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Sandberg bluegrass (Poa secunda) fractional cover", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Confidence maps (per target)", + "temporalCoverage": "2016-01-01/2025-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western United States (arid and semi-arid rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,30 -95,50" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + } + ], + "measurementTechnique": [ + "Remote sensing (HLS NDVI and related drivers)", + "Field observations (BLM AIM plots) and machine learning regression modeling" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "citation": [ + { + "@type": "CreativeWork", + "name": "Dahal, D., Boyte, S., Megard, L., Postma, K., and Pastick, N., 2025, Early Estimates of Exotic Annual Grass (EAG) in the Sagebrush Biome, USA, 2025: U.S. Geological Survey data release, https://doi.org/10.5066/P14VQEGO", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5066/P14VQEGO" + }, + "sameAs": "https://doi.org/10.5066/P14VQEGO" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "MRLC Exotic Annual Grass data landing page", + "contentUrl": "https://www.mrlc.gov/data/type/exotic-annual-grass", + "description": "MRLC landing page describing the EAG products and linking to individual releases." + }, + { + "@type": "DataDownload", + "name": "USGS data release (DOI: 10.5066/P14VQEGO)", + "contentUrl": "https://www.usgs.gov/data/early-estimates-exotic-annual-grass-eag-sagebrush-biome-usa-2025", + "description": "USGS authoritative data release record for EAG estimates (includes DOI and rights statement)." + } + ], + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "application/zip" + ], + "isPartOf": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "about": [ + { + "@type": "Thing", + "name": "Invasive species monitoring" + }, + { + "@type": "Thing", + "name": "Rangeland ecology" + }, + { + "@type": "Thing", + "name": "Remote sensing" + } + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/legacy-nlcd.jsonld b/data/objects/summoned/generated/MRLC_NLCD/legacy-nlcd.jsonld new file mode 100644 index 0000000..8d4690d --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/legacy-nlcd.jsonld @@ -0,0 +1,161 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data/type/legacy-nlcd#dataset", + "name": "Legacy National Land Cover Database (NLCD) Products", + "description": "Legacy NLCD products provide nationwide (United States) land cover and land cover change datasets at 30-meter resolution using a 16-class legend based on a modified Anderson Level II classification system. The legacy product suite supports cyclical updates of U.S. land cover and change, enabling monitoring and long-term trend assessments across many application areas (e.g., hydrology, environmental planning, risk analysis, education, and land management).", + "url": "https://www.mrlc.gov/data/type/legacy-nlcd", + "creator": { + "@type": "Organization", + "name": "MRLC Consortium / U.S. Geological Survey (USGS)", + "url": "https://www.mrlc.gov/partners" + }, + "publisher": { + "@type": "Organization", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "keywords": [ + "NLCD", + "legacy NLCD", + "land cover", + "land change", + "tree canopy", + "impervious surface", + "remote sensing", + "Landsat" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Land cover class (16-class legend)", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "United States (nationwide coverage; includes Alaska, Hawaii, and other U.S. territories depending on product)", + "geo": { + "@type": "GeoShape", + "box": "-180,15 -50,72" + } + }, + "temporalResolution": "Static", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Land cover change (varies by product)", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "United States (nationwide coverage; includes Alaska, Hawaii, and other U.S. territories depending on product)", + "geo": { + "@type": "GeoShape", + "box": "-180,15 -50,72" + } + }, + "temporalResolution": "Static", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Percent impervious surface (selected releases)", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "United States (nationwide coverage; includes Alaska, Hawaii, and other U.S. territories depending on product)", + "geo": { + "@type": "GeoShape", + "box": "-180,15 -50,72" + } + }, + "temporalResolution": "Static", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Tree canopy cover (selected releases)", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "United States (nationwide coverage; includes Alaska, Hawaii, and other U.S. territories depending on product)", + "geo": { + "@type": "GeoShape", + "box": "-180,15 -50,72" + } + }, + "temporalResolution": "Static", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + } + ], + "measurementTechnique": [ + "Landsat remote sensing", + "Land cover classification and change mapping (varies by release year/version)" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "citation": [ + { + "@type": "CreativeWork", + "name": "Dewitz, J., and U.S. Geological Survey, 2021, National Land Cover Database (NLCD) 2019 Products (ver. 2.0, June 2021): U.S. Geological Survey data release, https://doi.org/10.5066/P9KZCM54", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5066/P9KZCM54" + }, + "sameAs": "https://doi.org/10.5066/P9KZCM54" + } + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "MRLC Legacy NLCD landing page", + "contentUrl": "https://www.mrlc.gov/data/type/legacy-nlcd", + "description": "MRLC landing page for browsing and accessing legacy NLCD products." + }, + { + "@type": "DataDownload", + "name": "MRLC Viewer (custom downloads for NLCD)", + "contentUrl": "https://www.mrlc.gov/viewer/", + "description": "Interactive visualization and custom extent downloads for NLCD-related products." + } + ], + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "application/zip" + ], + "isPartOf": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "about": [ + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Land change" + }, + { + "@type": "Thing", + "name": "Remote sensing" + } + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/nalcms.jsonld b/data/objects/summoned/generated/MRLC_NLCD/nalcms.jsonld new file mode 100644 index 0000000..4ee9d8a --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/nalcms.jsonld @@ -0,0 +1,109 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://data.usgs.gov/datacatalog/data/USGS:74edd739-1584-41c3-bf08-0274681a779b#dataset", + "name": "North American Land Change Monitoring System (NALCMS) – North American Land Cover (30 m)", + "description": "NALCMS provides harmonized, trinational land cover maps for North America by combining national land cover products from Canada, the United States, and Mexico into a consistent continental mosaic. A recent 30-meter North American land cover dataset reflects land cover information for 2020 from Mexico and Canada, 2019 over the conterminous United States, and 2021 over Alaska, using Landsat 8 imagery inputs and country-specific classification methods integrated into a seamless product.", + "url": "https://data.usgs.gov/datacatalog/data/USGS%3A74edd739-1584-41c3-bf08-0274681a779b", + "creator": [ + { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS)" + }, + { + "@type": "Organization", + "name": "Natural Resources Canada" + }, + { + "@type": "Organization", + "name": "Instituto Nacional de Estadística y Geografía (INEGI)" + }, + { + "@type": "Organization", + "name": "Comisión Nacional Para el Conocimiento y Uso de la Biodiversidad (CONABIO)" + }, + { + "@type": "Organization", + "name": "Comisión Nacional Forestal (CONAFOR)" + } + ], + "publisher": { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS)", + "url": "https://www.usgs.gov/" + }, + "keywords": [ + "NALCMS", + "North America", + "land cover", + "land change", + "Landsat 8", + "continental mosaic" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Land cover class", + "temporalCoverage": "2019-01-01/2021-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "North America (Canada, United States, Mexico)", + "geo": { + "@type": "GeoShape", + "box": "-180,15 -50,85" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + } + ], + "measurementTechnique": [ + "Landsat 8 remote sensing", + "National land cover classification and continental integration/mosaicking" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "USGS Science Data Catalog landing page", + "contentUrl": "https://data.usgs.gov/datacatalog/data/USGS%3A74edd739-1584-41c3-bf08-0274681a779b", + "description": "Metadata landing page with access information for NALCMS products." + } + ], + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "application/zip" + ], + "isPartOf": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "about": [ + { + "@type": "Thing", + "name": "Land cover" + }, + { + "@type": "Thing", + "name": "Continental land monitoring" + } + ], + "citation": [ + { + "@type": "CreativeWork", + "name": "NALCMS: The North American Land Change Monitoring System", + "datePublished": "2024", + "publisher": { + "@type": "Organization", + "name": "Commission for Environmental Cooperation" + }, + "sameAs": "https://www.cec.org/publications/nalcms/" + } + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/rcmap.jsonld b/data/objects/summoned/generated/MRLC_NLCD/rcmap.jsonld new file mode 100644 index 0000000..a7cc90e --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/rcmap.jsonld @@ -0,0 +1,232 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data/project/rcmap#dataset", + "name": "Rangeland Condition Monitoring Assessment and Projection (RCMAP)", + "description": "RCMAP provides annual rangeland vegetation component fractional cover and related products across western North America derived from Landsat imagery. Components include bare ground, herbaceous, litter, shrub, sagebrush, tree (and related component/trend products), supporting rangeland monitoring and assessment from 1985 to present.", + "url": "https://www.mrlc.gov/data/project/rcmap", + "creator": { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS) and Bureau of Land Management (BLM)", + "url": "https://www.mrlc.gov/data/project/rcmap" + }, + "publisher": { + "@type": "Organization", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "keywords": [ + "RCMAP", + "rangeland", + "fractional cover", + "sagebrush", + "shrub", + "bare ground", + "Landsat", + "remote sensing" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Bare ground cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Herbaceous cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Litter cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Shrub cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Sagebrush cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + }, + { + "@type": "PropertyValue", + "name": "Tree cover (percent)", + "temporalCoverage": "1985-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Western North America (rangelands)", + "geo": { + "@type": "GeoShape", + "box": "-130,25 -95,60" + } + }, + "temporalResolution": "not detected", + "spatialResolution": { + "@type": "QuantitativeValue", + "value": 30, + "unitText": "m" + } + } + ], + "measurementTechnique": [ + "Landsat remote sensing", + "Fractional cover modeling and time-series analysis for rangeland components" + ], + "license": "https://creativecommons.org/publicdomain/zero/1.0/", + "distribution": [ + { + "@type": "DataDownload", + "name": "RCMAP downloads (MRLC data pages)", + "contentUrl": "https://www.mrlc.gov/data/project/rcmap", + "description": "Landing page for RCMAP products, including time-series cover, trends, and ecological potential." + }, + { + "@type": "DataDownload", + "name": "Example component download: Bare Ground (2011–2024 ZIP)", + "contentUrl": "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/data-bundles/Bare_Ground_2011_2024.zip", + "encodingFormat": [ + "application/zip" + ], + "description": "Example direct ZIP download link for an RCMAP component time-series." + }, + { + "@type": "DataDownload", + "name": "Example component download: Herbaceous (2011–2024 ZIP)", + "contentUrl": "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/data-bundles/Herbaceous_2011_2024.zip", + "encodingFormat": [ + "application/zip" + ], + "description": "Example direct ZIP download link for an RCMAP component time-series." + }, + { + "@type": "DataDownload", + "name": "RCMAP FGDC metadata (XML)", + "contentUrl": "https://www.mrlc.gov/downloads/sciweb1/shared/mrlc/metadata/RCMAP_V7_FGDC_Metadata.xml", + "encodingFormat": [ + "application/xml" + ], + "description": "FGDC metadata for RCMAP products." + }, + { + "@type": "DataDownload", + "name": "MRLC Rangeland Viewer", + "contentUrl": "https://www.mrlc.gov/rangeland-viewer/", + "description": "Interactive visualization, comparison, and subsetting/downloading for RCMAP data." + } + ], + "encodingFormat": [ + "image/tiff", + "application=geotiff", + "application/zip", + "application/xml" + ], + "isPartOf": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "about": [ + { + "@type": "Thing", + "name": "Rangeland monitoring" + }, + { + "@type": "Thing", + "name": "Vegetation cover" + }, + { + "@type": "Thing", + "name": "Remote sensing" + } + ], + "citation": [ + { + "@type": "CreativeWork", + "name": "Rangeland Condition Monitoring Assessment and Projection (RCMAP)", + "datePublished": "2022", + "publisher": { + "@type": "Organization", + "name": "U.S. Geological Survey" + }, + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.3133/fs20223036" + }, + "sameAs": "https://doi.org/10.3133/fs20223036" + } + ] +} diff --git a/data/objects/summoned/generated/MRLC_NLCD/webpage.jsonld b/data/objects/summoned/generated/MRLC_NLCD/webpage.jsonld new file mode 100644 index 0000000..9a9c24e --- /dev/null +++ b/data/objects/summoned/generated/MRLC_NLCD/webpage.jsonld @@ -0,0 +1,86 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.mrlc.gov/data#webpage", + "name": "MRLC Data", + "description": "The Multi-Resolution Land Characteristics (MRLC) Consortium data portal provides nationwide (United States) and North America land cover and related remote-sensing products, including Annual NLCD (annual land cover and land change science products), RCMAP (rangeland fractional cover and trends), Exotic Annual Grass fractional cover products, NALCMS (North American land cover), and legacy NLCD products. The portal also provides tools (e.g., MRLC Viewer, EVA Tool, Rangeland Viewer) and web services (OGC WMS/WCS) for interactive access and subsetting.", + "url": "https://www.mrlc.gov/data", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "@id": "https://www.mrlc.gov/#website", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/" + }, + "publisher": { + "@type": "Organization", + "@id": "https://www.mrlc.gov/#org", + "name": "Multi-Resolution Land Characteristics (MRLC) Consortium", + "url": "https://www.mrlc.gov/", + "description": "A consortium of U.S. federal agencies producing land cover and land change data products.", + "member": [ + { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS)" + }, + { + "@type": "Organization", + "name": "National Oceanic and Atmospheric Administration (NOAA)" + }, + { + "@type": "Organization", + "name": "U.S. Forest Service (USFS)" + }, + { + "@type": "Organization", + "name": "Bureau of Land Management (BLM)" + }, + { + "@type": "Organization", + "name": "National Park Service (NPS)" + }, + { + "@type": "Organization", + "name": "U.S. Department of Agriculture (USDA)" + }, + { + "@type": "Organization", + "name": "U.S. Environmental Protection Agency (EPA)" + }, + { + "@type": "Organization", + "name": "U.S. Fish and Wildlife Service (USFWS)" + }, + { + "@type": "Organization", + "name": "National Agricultural Statistics Service (NASS)" + }, + { + "@type": "Organization", + "name": "LANDFIRE" + } + ] + }, + "keywords": [ + "MRLC", + "land cover", + "land use", + "NLCD", + "Annual NLCD", + "RCMAP", + "rangeland", + "tree canopy", + "impervious surface", + "remote sensing", + "Landsat" + ], + "about": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + }, + "mainEntity": { + "@type": "DataCatalog", + "@id": "https://www.mrlc.gov/data#catalog" + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/Shale_Network/shale-network.jsonld b/data/objects/summoned/generated/Shale_Network/shale-network.jsonld new file mode 100644 index 0000000..9b6188b --- /dev/null +++ b/data/objects/summoned/generated/Shale_Network/shale-network.jsonld @@ -0,0 +1,216 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://doi.org/10.4211/his-data-shalenetwork#dataset", + "name": "Shale Network (ShaleNetwork Database)", + "url": "https://doi.org/10.4211/his-data-shalenetwork", + "description": "The Shale Network database is a collaborative water quality and quantity data resource for regions of hydrocarbon extraction (including shale gas development), acting as an \"honest broker\" that collates datasets from academic researchers, government agencies, industry, nonprofit entities, and watershed groups. The database is published through the CUAHSI Hydrologic Information System (HIS) for discovery and access via HydroClient and associated web services, and is used to establish background concentrations and assess environmental impacts across energy production regions.", + "keywords": [ + "Shale Network", + "ShaleNetwork", + "water quality", + "water quantity", + "hydrogeochemistry", + "shale gas", + "oil and gas production", + "hydrocarbon extraction", + "groundwater chemistry", + "surface water chemistry", + "CUAHSI", + "HIS", + "WaterOneFlow", + "ODM" + ], + "creator": [ + { + "@type": "Organization", + "name": "Shale Network", + "url": "https://shalenetwork.org/" + }, + { + "@type": "Person", + "name": "Susan L. Brantley", + "email": "sxb7@psu.edu", + "affiliation": { + "@type": "Organization", + "name": "The Pennsylvania State University", + "url": "https://www.psu.edu/" + } + } + ], + "provider": [ + { + "@type": "Organization", + "name": "Consortium of Universities for the Advancement of Hydrologic Sciences, Inc. (CUAHSI)", + "url": "https://www.cuahsi.org/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Consortium of Universities for the Advancement of Hydrologic Sciences, Inc. (CUAHSI)", + "url": "https://www.cuahsi.org/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Common water quality measurements", + "description": "Common field and laboratory measurements such as pH, major ions (Na, K, Mg, Ca, sulfate, chloride, bromide), nutrients (ammonium, nitrate, nitrite, total N), alkalinity/acidity, hardness, TDS, and related parameters.", + "temporalCoverage": "2011-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "Energy production regions, primarily the northeastern United States; see dataset portals for exact site coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Trace elements", + "description": "Trace element concentrations such as Al, As, Ba, B, Cd, Cr, Co, Cu, Fe, Pb, Li, Mn, Hg, Mo, Ni, Se, Ag, Sr, Th, U, Zn (availability varies by site and dataset).", + "temporalCoverage": "2011-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "Energy production regions, primarily the northeastern United States; see dataset portals for exact site coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Naturally occurring radioactive material (NORM)", + "description": "Radiological measurements such as gross alpha/beta, Ra-226, and Ra-228 (availability varies).", + "temporalCoverage": "2011-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "Energy production regions, primarily the northeastern United States; see dataset portals for exact site coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Organic constituents", + "description": "Organic compounds and indicators such as benzene, toluene, ethylbenzene, xylenes, naphthalene, oil and grease, phenolics, and related constituents (availability varies).", + "temporalCoverage": "2011-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "Energy production regions, primarily the northeastern United States; see dataset portals for exact site coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Water quantity (where available)", + "description": "Water quantity observations associated with monitoring sites where contributed and published through HIS services.", + "temporalCoverage": "2011-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "Energy production regions, primarily the northeastern United States; see dataset portals for exact site coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "measurementTechnique": [ + "Compilation and harmonization of water quality and quantity datasets contributed by multiple organizations", + "Publication through CUAHSI HIS using the Observations Data Model (ODM) and WaterOneFlow web services" + ], + "encodingFormat": [ + "text/html", + "application/xml", + "text/xml", + "text/csv" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "DOI landing page", + "description": "Persistent identifier landing page for the Shale Network database.", + "contentUrl": "https://doi.org/10.4211/his-data-shalenetwork", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "HIS Central network registration (Shale Network)", + "description": "HIS Central registry entry for the Shale Network WaterOneFlow service and citation information.", + "contentUrl": "https://hiscentral.cuahsi.org/pub_network.aspx?n=228", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "HydroClient data portal access", + "description": "CUAHSI HydroClient portal for discovering and downloading published observations.", + "contentUrl": "https://data.cuahsi.org/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Shale Network data access documentation", + "description": "Project documentation describing ways to access Shale Network data, including HydroClient, HydroShare, and Penn State DataCommons.", + "contentUrl": "https://shalenetwork.org/database/data-access.html", + "encodingFormat": [ + "text/html" + ] + } + ], + "citation": [ + { + "@type": "CreativeWork", + "name": "Shale Network Database", + "author": [ + { + "@type": "Person", + "name": "Susan L. Brantley" + } + ], + "datePublished": "2011", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.4211/his-data-shalenetwork" + } + ], + "sameAs": "https://doi.org/10.4211/his-data-shalenetwork" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrogeochemistry" + }, + { + "@type": "Thing", + "name": "Water quality" + }, + { + "@type": "Thing", + "name": "Oil and gas development" + }, + { + "@type": "Thing", + "name": "Shale gas" + }, + { + "@type": "Thing", + "name": "Groundwater" + }, + { + "@type": "Thing", + "name": "Surface water" + } + ] +} diff --git a/data/objects/summoned/generated/Shale_Network/webpage.jsonld b/data/objects/summoned/generated/Shale_Network/webpage.jsonld new file mode 100644 index 0000000..6bf7ddd --- /dev/null +++ b/data/objects/summoned/generated/Shale_Network/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://doi.org/10.4211/his-data-shalenetwork", + "name": "Shale Network (ShaleNetwork Database)", + "description": "DOI landing page for the Shale Network database: water quality and quantity data from oil and gas production regions, published via CUAHSI HIS. Shale Network, Penn State, CUAHSI.", + "url": "https://doi.org/10.4211/his-data-shalenetwork", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "CUAHSI HydroShare", + "url": "https://www.hydroshare.org/" + }, + "about": { + "@type": "Dataset", + "name": "Shale Network", + "url": "https://doi.org/10.4211/his-data-shalenetwork#dataset" + }, + "publisher": { + "@type": "Organization", + "name": "Consortium of Universities for the Advancement of Hydrologic Sciences, Inc. (CUAHSI)", + "url": "https://www.cuahsi.org/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "Shale Network (ShaleNetwork Database)", + "url": "https://doi.org/10.4211/his-data-shalenetwork#dataset" + }, + "keywords": [ + "Shale Network", + "water quality", + "hydrogeochemistry", + "CUAHSI", + "HIS" + ] +} diff --git a/data/objects/summoned/generated/SoilGrids2/soilgrids2.jsonld b/data/objects/summoned/generated/SoilGrids2/soilgrids2.jsonld new file mode 100644 index 0000000..3689bb4 --- /dev/null +++ b/data/objects/summoned/generated/SoilGrids2/soilgrids2.jsonld @@ -0,0 +1,431 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://soilgrids.org/#dataset", + "name": "SoilGrids2 (SoilGrids 2.0 global soil property maps)", + "url": "https://soilgrids.org/", + "description": "SoilGrids2 (SoilGrids 2.0) provides global gridded soil property maps at approximately 250 m spatial resolution. The dataset includes predicted soil properties such as bulk density, soil organic carbon content, soil pH, soil texture fractions (sand, silt, clay), and coarse fragments, among others. SoilGrids products are discoverable via the ISRIC Data Hub (GeoNetwork catalog) and distributed through ISRIC file services (e.g., WebDAV directories under files.isric.org/soilgrids/).", + "keywords": [ + "SoilGrids2", + "SoilGrids 2.0", + "ISRIC", + "global soil maps", + "digital soil mapping", + "bulk density", + "soil organic carbon", + "soil pH", + "soil texture", + "sand", + "silt", + "clay", + "coarse fragments", + "soil properties", + "geospatial raster" + ], + "creator": [ + { + "@type": "Organization", + "name": "ISRIC – International Soil Reference and Information Centre", + "url": "https://www.isric.org/" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "ISRIC – International Soil Reference and Information Centre", + "url": "https://www.isric.org/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "ISRIC – International Soil Reference and Information Centre", + "url": "https://www.isric.org/" + } + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Bulk Density", + "alternateName": "bdod", + "unitText": "cg/cm^3", + "description": "Predicted bulk density maps for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Cation Exchange Capacity at pH 7", + "alternateName": "cec", + "unitText": "mmol(c)/kg", + "description": "Predicted cation exchange capacity buffered at pH 7 for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Coarse Fragments", + "alternateName": "cfvo", + "unitText": "cm^3/dm^3", + "description": "Predicted volumetric fraction of coarse fragments for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Clay", + "alternateName": "clay", + "unitText": "g/kg", + "description": "Predicted clay content for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Nitrogen", + "alternateName": "nitrogen", + "unitText": "cg/kg", + "description": "Predicted total nitrogen for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Organic Carbon Density", + "alternateName": "ocd", + "unitText": "hg/m^3", + "description": "Predicted organic carbon density for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Organic Carbon Stocks", + "alternateName": "ocs", + "unitText": "t/ha", + "description": "Predicted organic carbon stocks for SoilGrids soil layers.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Soil Organic Carbon", + "alternateName": "soc", + "unitText": "dg/kg", + "description": "Predicted soil organic carbon concentration for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "pH Water", + "alternateName": "phh2o", + "unitText": "pH x 10", + "description": "Predicted soil pH in water for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Sand", + "alternateName": "sand", + "unitText": "g/kg", + "description": "Predicted sand content for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Silt", + "alternateName": "silt", + "unitText": "g/kg", + "description": "Predicted silt content for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Volumetric Water Content at 10 kPa", + "alternateName": "wv0010", + "unitText": "10^-3 cm^3 cm^-3", + "description": "Predicted volumetric water content at 10 kPa for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Volumetric Water Content at 1500 kPa", + "alternateName": "wv1500", + "unitText": "10^-3 cm^3 cm^-3", + "description": "Predicted volumetric water content at 1500 kPa for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + }, + { + "@type": "PropertyValue", + "name": "Volumetric Water Content at 33 kPa", + "alternateName": "wv003", + "unitText": "10^-3 cm^3 cm^-3", + "description": "Predicted volumetric water content at 33 kPa for standard SoilGrids depth intervals.", + "temporalCoverage": "Static", + "spatialCoverage": { + "@type": "Place", + "name": "Global soil property maps", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "Static", + "spatialResolution": "Approximately 250 m" + } + ], + "encodingFormat": [ + "image/tiff", + "application/geotiff", + "application/zip", + "text/html", + "application/xml" + ], + "license": "https://creativecommons.org/licenses/by/4.0/", + "isAccessibleForFree": true, + "distribution": [ + { + "@type": "DataDownload", + "name": "ISRIC Data Hub (GeoNetwork) catalog record", + "description": "GeoNetwork catalog record in the ISRIC Data Hub describing a SoilGrids-related dataset entry.", + "contentUrl": "https://data.isric.org/geonetwork/srv/api/records/41cb0ae9-1604-4807-96e6-0dc8c94c5d22?language=all", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "ISRIC Data Hub sitemap / discovery endpoint", + "description": "GeoNetwork API sitemap endpoint used for dataset discovery and indexing.", + "contentUrl": "https://data.isric.org/geonetwork/srv/api/sitemap", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "ISRIC SoilGrids file distribution (WebDAV root)", + "description": "ISRIC WebDAV directory listing for SoilGrids distributions (includes latest and former releases).", + "contentUrl": "https://files.isric.org/soilgrids/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "SoilGrids latest data directory (WebDAV)", + "description": "Directory listing for SoilGrids latest data products (organized by variable).", + "contentUrl": "https://files.isric.org/soilgrids/latest/data/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "ISRIC SoilGrids overview page", + "description": "ISRIC overview page describing SoilGrids, licensing, and access methods.", + "contentUrl": "https://isric.org/explore/soilgrids", + "encodingFormat": [ + "text/html" + ] + } + ], + "about": [ + { + "@type": "Thing", + "name": "Soil" + }, + { + "@type": "Thing", + "name": "Soil properties" + }, + { + "@type": "Thing", + "name": "Digital soil mapping" + }, + { + "@type": "Thing", + "name": "Geospatial raster data" + } + ], + "sameAs": [ + "https://isric.org/explore/soilgrids", + "https://files.isric.org/soilgrids/" + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "SoilGrids 2.0: producing soil information for the globe with quantified spatial uncertainty", + "author": [ + { + "@type": "Person", + "name": "L. Poggio" + }, + { + "@type": "Person", + "name": "L. M. de Sousa" + }, + { + "@type": "Person", + "name": "N. H. Batjes" + }, + { + "@type": "Person", + "name": "G. B. M. Heuvelink" + }, + { + "@type": "Person", + "name": "B. Kempen" + }, + { + "@type": "Person", + "name": "E. Ribeiro" + }, + { + "@type": "Person", + "name": "D. Rossiter" + } + ], + "datePublished": "2021", + "isPartOf": { + "@type": "Periodical", + "name": "SOIL" + }, + "volumeNumber": "7", + "issueNumber": "1", + "pagination": "217-240", + "identifier": { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.5194/soil-7-217-2021" + }, + "sameAs": "https://doi.org/10.5194/soil-7-217-2021" + } + ] +} diff --git a/data/objects/summoned/generated/SoilGrids2/webpage.jsonld b/data/objects/summoned/generated/SoilGrids2/webpage.jsonld new file mode 100644 index 0000000..1138090 --- /dev/null +++ b/data/objects/summoned/generated/SoilGrids2/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://soilgrids.org/", + "name": "SoilGrids2: Global soil property maps", + "description": "Webpage for SoilGrids2 (SoilGrids 2.0)—global gridded soil property maps at ~250 m resolution from ISRIC. The site provides access to bulk density, organic carbon, pH, texture, and coarse fragments; discovery via ISRIC Data Hub (GeoNetwork) and distribution via files.isric.org/soilgrids/.", + "url": "https://soilgrids.org/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "ISRIC – International Soil Reference and Information Centre", + "url": "https://www.isric.org/" + }, + "about": { + "@type": "Dataset", + "name": "SoilGrids2", + "url": "https://soilgrids.org/" + }, + "publisher": { + "@type": "Organization", + "name": "ISRIC – International Soil Reference and Information Centre", + "url": "https://www.isric.org/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "SoilGrids2 (SoilGrids 2.0 global soil property maps)", + "url": "https://soilgrids.org/#dataset" + }, + "keywords": [ + "SoilGrids2", + "ISRIC", + "global soil maps", + "digital soil mapping", + "soil properties" + ] +} diff --git a/data/objects/summoned/generated/TerraClimate/terraclimate.jsonld b/data/objects/summoned/generated/TerraClimate/terraclimate.jsonld new file mode 100644 index 0000000..a8a1de6 --- /dev/null +++ b/data/objects/summoned/generated/TerraClimate/terraclimate.jsonld @@ -0,0 +1,462 @@ +{ + "@context": "https://schema.org/", + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.climatologylab.org/terraclimate.html#dataset", + "name": "TerraClimate: Monthly Climate and Climatic Water Balance for Global Terrestrial Surfaces", + "description": "TerraClimate is a dataset of monthly climate and climatic water balance for global terrestrial land surfaces at ~4-km (1/24°) spatial resolution. TerraClimate v1.1 provides time-varying monthly climate fields from 1950-present using climatically aided interpolation: high-resolution climatological normals from WorldClim are combined with monthly anomalies from ERA5 reanalysis. TerraClimate also produces monthly surface water balance variables using a modified Thornthwaite-Mather climatic water-balance model incorporating precipitation, temperature, reference evapotranspiration, and soil water capacity. Additional future layers are provided for +2°C and +4°C global mean temperature futures, plus a counterfactual climate scenario, for pseudo-years 1950-2025. Data are distributed primarily as compressed NetCDF (NetCDF4) via THREDDS/OPeNDAP and related web services and are also available as a Google Earth Engine image collection.", + "url": "https://www.climatologylab.org/terraclimate.html", + "isAccessibleForFree": true, + "keywords": [ + "TerraClimate", + "monthly climate", + "climatic water balance", + "temperature", + "precipitation", + "vapor pressure", + "solar radiation", + "wind speed", + "evapotranspiration", + "runoff", + "soil moisture", + "snow water equivalent", + "PDSI", + "drought", + "WorldClim", + "ERA5", + "NetCDF4", + "THREDDS", + "OPeNDAP", + "NCSS", + "WMS", + "WCS", + "Google Earth Engine" + ], + "creator": [ + { + "@type": "Person", + "name": "John T. Abatzoglou", + "affiliation": { + "@type": "Organization", + "name": "University of Idaho", + "url": "https://www.uidaho.edu/" + } + }, + { + "@type": "Person", + "name": "S. Z. Dobrowski" + }, + { + "@type": "Person", + "name": "S. A. Parks" + }, + { + "@type": "Person", + "name": "K. C. Hegewisch" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "Climatology Lab", + "url": "https://www.climatologylab.org/", + "parentOrganization": { + "@type": "Organization", + "name": "University of Idaho", + "url": "https://www.uidaho.edu/" + } + }, + { + "@type": "Organization", + "name": "Northwest Knowledge Network (NKN)", + "url": "https://www.northwestknowledge.net/", + "description": "Primary THREDDS hosting and web services for TerraClimate NetCDF distributions." + } + ], + "license": { + "@type": "CreativeWork", + "name": "CC0 1.0 Universal (Public Domain Dedication)", + "url": "https://creativecommons.org/publicdomain/zero/1.0/" + }, + "encodingFormat": [ + "application/x-netcdf", + "text/html" + ], + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Maximum temperature", + "unitText": "C", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Minimum temperature", + "unitText": "C", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Vapor pressure", + "unitText": "kPa", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Precipitation accumulation", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Downward surface shortwave radiation", + "unitText": "W/m2", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Wind speed", + "unitText": "m/s", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Reference evapotranspiration (ASCE Penman–Monteith)", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Runoff", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Actual evapotranspiration", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Climate water deficit", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Soil moisture (total column, end of month)", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Snow water equivalent (end of month)", + "unitText": "mm", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Palmer Drought Severity Index (PDSI)", + "unitText": "unitless", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + }, + { + "@type": "PropertyValue", + "name": "Vapor pressure deficit (VPD)", + "unitText": "kPa", + "temporalCoverage": [ + "1950-01-01/..", + "1950-01-01/2025-12-31" + ], + "spatialCoverage": { + "@type": "Place", + "name": "Global terrestrial land surfaces", + "geo": { + "@type": "GeoShape", + "box": "-180,-90 180,90" + } + }, + "temporalResolution": "P1M", + "spatialResolution": "1/24 degree (~4 km)" + } + ], + "measurementTechnique": [ + "Climatically aided interpolation using high-resolution climatological normals (WorldClim) combined with monthly anomalies from ERA5 reanalysis", + "Modified Thornthwaite–Mather climatic water-balance model for derived water-balance variables" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "TerraClimate THREDDS catalog (all data, summaries, climatologies, and +2°C/+4°C scenarios)", + "description": "Browsable THREDDS catalog containing annual/monthly NetCDF files and aggregated products, including summaries, climatologies, and climate futures (+2°C and +4°C).", + "encodingFormat": [ + "text/html" + ], + "contentUrl": "https://tds-proxy.nkn.uidaho.edu/thredds/catalog/TERRACLIMATE_ALL/catalog.html" + }, + { + "@type": "DataDownload", + "name": "TerraClimate THREDDS aggregated catalog (monthly aggregations by variable)", + "description": "THREDDS aggregated catalogs providing service endpoints (OPeNDAP/NetCDF Subset/NCSS/WMS/WCS) for monthly aggregations by variable.", + "encodingFormat": [ + "text/html" + ], + "contentUrl": "https://tds-proxy.nkn.uidaho.edu/thredds/terraclimate_aggregated.html" + }, + { + "@type": "DataDownload", + "name": "Example OP(e)NDAP access endpoint (aggregated monthly variable file)", + "description": "Example OPeNDAP endpoint for an aggregated monthly variable NetCDF. Replace the variable/file identifier as needed for other variables and products available in the THREDDS aggregated catalog.", + "encodingFormat": [ + "application/x-netcdf" + ], + "contentUrl": "https://tds-proxy.nkn.uidaho.edu/thredds/dodsC/agg_terraclimate_tmax_1950_CurrentYear_GLOBE.nc" + }, + { + "@type": "DataDownload", + "name": "Google Earth Engine ImageCollection: IDAHO_EPSCOR/TERRACLIMATE", + "description": "TerraClimate is also available as a Google Earth Engine ImageCollection for cloud-based analysis and visualization.", + "encodingFormat": [ + "text/html" + ], + "contentUrl": "https://developers.google.com/earth-engine/datasets/catalog/IDAHO_EPSCOR_TERRACLIMATE" + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "TerraClimate, a high-resolution global dataset of monthly climate and climatic water balance from 1958–2015", + "author": [ + { + "@type": "Person", + "name": "J. T. Abatzoglou" + }, + { + "@type": "Person", + "name": "S. Z. Dobrowski" + }, + { + "@type": "Person", + "name": "S. A. Parks" + }, + { + "@type": "Person", + "name": "K. C. Hegewisch" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Scientific Data" + }, + "datePublished": "2018", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1038/sdata.2017.191" + } + ], + "sameAs": "https://doi.org/10.1038/sdata.2017.191" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Climate" + }, + { + "@type": "Thing", + "name": "Climatology" + }, + { + "@type": "Thing", + "name": "Hydrology" + }, + { + "@type": "Thing", + "name": "Drought" + }, + { + "@type": "Thing", + "name": "Evapotranspiration" + }, + { + "@type": "Thing", + "name": "Water balance" + }, + { + "@type": "Thing", + "name": "Ecological and hydrological studies" + } + ] +} diff --git a/data/objects/summoned/generated/TerraClimate/webpage.jsonld b/data/objects/summoned/generated/TerraClimate/webpage.jsonld new file mode 100644 index 0000000..55fe970 --- /dev/null +++ b/data/objects/summoned/generated/TerraClimate/webpage.jsonld @@ -0,0 +1,62 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.climatologylab.org/terraclimate.html", + "name": "TerraClimate", + "description": "Webpage for TerraClimate, a high-resolution global dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958-2020. TerraClimate provides monthly climate data at ~4-km (1/24th degree) spatial resolution, including primary climate variables (temperature, precipitation, vapor pressure, radiation, wind-speed) and derived water balance variables (evapotranspiration, runoff, soil moisture, drought indices). The dataset uses climatically aided interpolation combining WorldClim climatological normals with time-varying data from CRU Ts4.0 and JRA55. Future climate projections are also available for +2C and +4C scenarios.", + "url": "https://www.climatologylab.org/terraclimate.html", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Climatology Lab", + "url": "https://www.climatologylab.org/" + }, + "about": { + "@type": "Dataset", + "name": "TerraClimate", + "description": "Monthly climate and climatic water balance for global terrestrial surfaces", + "url": "https://www.climatologylab.org/terraclimate.html" + }, + "publisher": { + "@type": "Organization", + "name": "Climatology Lab", + "url": "https://www.climatologylab.org/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "TerraClimate", + "description": "High-resolution global dataset of monthly climate and climatic water balance", + "url": "https://www.climatologylab.org/terraclimate.html" + }, + "keywords": [ + "TerraClimate", + "climate", + "monthly climate", + "water balance", + "global climate", + "high resolution", + "climatology", + "evapotranspiration", + "drought indices", + "NetCDF", + "THREDDS" + ], + "breadcrumb": { + "@type": "BreadcrumbList", + "itemListElement": [ + { + "@type": "ListItem", + "position": 1, + "name": "Climatology Lab", + "item": "https://www.climatologylab.org/" + }, + { + "@type": "ListItem", + "position": 2, + "name": "TerraClimate", + "item": "https://www.climatologylab.org/terraclimate.html" + } + ] + } +} \ No newline at end of file diff --git a/data/objects/summoned/generated/WATERBASE/waterbase.jsonld b/data/objects/summoned/generated/WATERBASE/waterbase.jsonld new file mode 100644 index 0000000..c9d1dd3 --- /dev/null +++ b/data/objects/summoned/generated/WATERBASE/waterbase.jsonld @@ -0,0 +1,177 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1#dataset", + "name": "WATERBASE (Waterbase - Water Quality ICM)", + "url": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1", + "description": "WATERBASE is the generic name given to the European Environment Agency (EEA) databases on the status and quality of Europe's rivers, lakes, groundwater bodies, and transitional, coastal and marine waters. The Waterbase - Water Quality ICM dataset contains time series information on nutrients, organic matter, hazardous substances, pesticides and other chemical substances, reported by EEA member and cooperating countries from monitoring sites and aggregated reporting streams. The dataset supports European water assessments, indicators, and reporting obligations under WISE State of Environment (SoE) water quality reporting and related frameworks.", + "keywords": [ + "WATERBASE", + "Waterbase", + "water quality", + "hydrogeochemistry", + "rivers", + "lakes", + "groundwater", + "coastal waters", + "marine waters", + "transitional waters", + "nutrients", + "pesticides", + "hazardous substances", + "organic matter", + "WISE", + "EEA" + ], + "creator": [ + { + "@type": "Organization", + "name": "European Environment Agency (EEA)", + "url": "https://www.eea.europa.eu/" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "European Environment Agency (EEA)", + "url": "https://www.eea.europa.eu/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "European Environment Agency (EEA)", + "url": "https://www.eea.europa.eu/" + } + ], + "datePublished": "2025-07-02", + "version": "01.00", + "isAccessibleForFree": true, + "license": "https://creativecommons.org/licenses/by/4.0/", + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Water quality parameters", + "description": "Measured and aggregated parameters describing chemical and physico-chemical water quality in inland and coastal/marine waters (including nutrients, organic matter, hazardous substances, pesticides and other chemicals).", + "temporalCoverage": "1900-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Europe, EEA member countries, and cooperating reporting countries; see dataset documentation for exact country coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Monitoring locations and water bodies", + "description": "Spatial identifiers and associated attributes for monitoring sites and water bodies reported through WISE and WFD/WISE spatial reporting.", + "temporalCoverage": "1900-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Europe, EEA member countries, and cooperating reporting countries; see dataset documentation for exact country coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Ecological and chemical status (where applicable)", + "description": "Reported status and classification attributes associated with monitored waters and water bodies, as provided in reporting streams.", + "temporalCoverage": "1900-01-01/2024-12-31", + "spatialCoverage": { + "@type": "Place", + "name": "Europe, EEA member countries, and cooperating reporting countries; see dataset documentation for exact country coverage" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "measurementTechnique": [ + "In situ water quality monitoring by national and regional authorities", + "Compilation, harmonisation, and processing of reported monitoring data for European-wide assessments" + ], + "encodingFormat": [ + "text/html", + "text/csv", + "text/plain", + "application/sql", + "application/vnd.sqlite3", + "application/zip", + "application/pdf" + ], + "distribution": [ + { + "@type": "DataDownload", + "name": "EEA Data Hub item page", + "description": "Landing page for Waterbase - Water Quality ICM with dataset versions, temporal coverage, and access links.", + "contentUrl": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "Direct download (EEA SDI DataShare)", + "description": "Direct download endpoint for the Waterbase - Water Quality ICM 2024 release (bulk download).", + "contentUrl": "https://sdi.eea.europa.eu/datashare/s/3JiTia3qePyGxyA/download", + "encodingFormat": [ + "application/zip" + ] + }, + { + "@type": "DataDownload", + "name": "Metadata factsheet (PDF)", + "description": "Metadata factsheet for Waterbase - Water Quality ICM, 2024 release.", + "contentUrl": "https://sdi.eea.europa.eu/catalogue/datahub/api/records/77976729-1aeb-4b61-a673-83db6c6a2ab2/formatters/xsl-view?approved=true&language=eng&output=pdf", + "encodingFormat": [ + "application/pdf" + ] + }, + { + "@type": "DataDownload", + "name": "DISCODATA endpoint (direct database access and filtering)", + "description": "Portal and endpoint for accessing and filtering data directly in the database, supporting application-specific access and user-driven downloads.", + "contentUrl": "https://discodata.eea.europa.eu/", + "encodingFormat": [ + "text/html" + ] + } + ], + "about": [ + { + "@type": "Thing", + "name": "Hydrogeochemistry" + }, + { + "@type": "Thing", + "name": "Water quality" + }, + { + "@type": "Thing", + "name": "Environmental monitoring" + }, + { + "@type": "Thing", + "name": "Surface water" + }, + { + "@type": "Thing", + "name": "Groundwater" + } + ], + "citation": [ + { + "@type": "CreativeWork", + "name": "Waterbase - Water Quality ICM", + "datePublished": "2025", + "publisher": { + "@type": "Organization", + "name": "European Environment Agency" + }, + "sameAs": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1" + } + ] +} diff --git a/data/objects/summoned/generated/WATERBASE/webpage.jsonld b/data/objects/summoned/generated/WATERBASE/webpage.jsonld new file mode 100644 index 0000000..7fb6a19 --- /dev/null +++ b/data/objects/summoned/generated/WATERBASE/webpage.jsonld @@ -0,0 +1,37 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1", + "name": "WATERBASE (Waterbase - Water Quality ICM)", + "description": "EEA Data Hub page for WATERBASE: European water quality and status data for rivers, lakes, groundwater, transitional, coastal and marine waters. European Environment Agency.", + "url": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "EEA Data Hub", + "url": "https://www.eea.europa.eu/en/datahub" + }, + "about": { + "@type": "Dataset", + "name": "WATERBASE", + "url": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1#dataset" + }, + "publisher": { + "@type": "Organization", + "name": "European Environment Agency (EEA)", + "url": "https://www.eea.europa.eu/" + }, + "mainEntity": { + "@type": "Dataset", + "name": "WATERBASE (Waterbase - Water Quality ICM)", + "url": "https://www.eea.europa.eu/en/datahub/datahubitem-view/fbf3717c-cd7b-4785-933a-d0cf510542e1#dataset" + }, + "keywords": [ + "WATERBASE", + "water quality", + "EEA", + "hydrogeochemistry", + "WISE" + ] +} diff --git a/data/objects/summoned/generated/Water_Quality_Portal/water-quality-portal.jsonld b/data/objects/summoned/generated/Water_Quality_Portal/water-quality-portal.jsonld new file mode 100644 index 0000000..9507028 --- /dev/null +++ b/data/objects/summoned/generated/Water_Quality_Portal/water-quality-portal.jsonld @@ -0,0 +1,276 @@ +{ + "@context": { + "@vocab": "https://schema.org/" + }, + "@type": "Dataset", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.waterqualitydata.us/#dataset", + "name": "Water Quality Portal (WQP)", + "url": "https://www.waterqualitydata.us/", + "description": "The Water Quality Portal (WQP) is a cooperative, services-first data portal that integrates publicly available discrete water-quality monitoring data from the USGS National Water Information System (NWIS) and the EPA Water Quality Exchange (WQX) Data Warehouse, along with data contributed by hundreds of state, tribal, federal, and local organizations. The portal provides station metadata and analytical results for physical, chemical, and biological measurements, accessible through a web interface and programmatic web services (REST) with multiple output formats.", + "keywords": [ + "water quality", + "USGS", + "US EPA", + "WQP", + "NWIS", + "WQX", + "STORET", + "water chemistry", + "hydrogeochemistry", + "monitoring", + "stations", + "sample results", + "nutrients", + "metals", + "contaminants" + ], + "creator": [ + { + "@type": "Organization", + "name": "National Water Quality Monitoring Council", + "url": "https://www.epa.gov/awma/national-water-quality-monitoring-council" + }, + { + "@type": "Organization", + "name": "U.S. Environmental Protection Agency (EPA)", + "url": "https://www.epa.gov/" + } + ], + "provider": [ + { + "@type": "Organization", + "name": "National Water Quality Monitoring Council", + "url": "https://www.epa.gov/awma/national-water-quality-monitoring-council" + }, + { + "@type": "Organization", + "name": "U.S. Environmental Protection Agency (EPA)", + "url": "https://www.epa.gov/" + } + ], + "publisher": [ + { + "@type": "Organization", + "name": "National Water Quality Monitoring Council", + "url": "https://www.epa.gov/awma/national-water-quality-monitoring-council" + }, + { + "@type": "Organization", + "name": "U.S. Environmental Protection Agency (EPA)", + "url": "https://www.epa.gov/" + } + ], + "contributor": [ + { + "@type": "Organization", + "name": "U.S. Geological Survey (USGS)", + "url": "https://www.usgs.gov/" + } + ], + "isAccessibleForFree": true, + "variableMeasured": [ + { + "@type": "PropertyValue", + "name": "Water quality results", + "description": "Discrete sample results including measured values, units, methods, and qualifiers for physical, chemical, and biological characteristics.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Station and Monitoring Location Metadata", + "description": "Locations where samples and observations were collected, including identifiers, coordinates, and site descriptors.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Nutrients", + "description": "Nutrient-related characteristics such as nitrogen and phosphorus species.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Metals and trace elements", + "description": "Metals and trace elements measured in water, sediment, or related matrices.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Organic contaminants and pesticides", + "description": "Organic contaminants, pesticides, and related analytes reported by contributing organizations.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Physical parameters", + "description": "Physical characteristics such as temperature, specific conductance, turbidity, and dissolved oxygen (where available).", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + }, + { + "@type": "PropertyValue", + "name": "Biological data", + "description": "Biological observations and metrics available through WQP services where reported by data providers.", + "temporalCoverage": "1900-01-01/..", + "spatialCoverage": { + "@type": "Place", + "name": "United States and beyond; coverage depends on contributing organizations and query parameters" + }, + "temporalResolution": "not detected", + "spatialResolution": "not detected" + } + ], + "encodingFormat": [ + "text/html", + "application/json", + "text/csv", + "application/xml", + "application/geo+json", + "application/zip" + ], + "license": "https://waterdata.us/disclaimer.html", + "distribution": [ + { + "@type": "DataDownload", + "name": "Water Quality Portal (web interface)", + "description": "Main portal interface for querying and downloading water-quality stations and results.", + "contentUrl": "https://www.waterqualitydata.us/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "WQP Web Services Guide", + "description": "Documentation for constructing REST web-service requests and available endpoints and parameters.", + "contentUrl": "https://www.waterqualitydata.us/webservices_documentation/", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "WQP Data Download API (Swagger UI)", + "description": "Interactive API documentation for Water Quality Portal data download services.", + "contentUrl": "https://www.waterqualitydata.us/data/swagger-ui/index.html", + "encodingFormat": [ + "text/html" + ] + }, + { + "@type": "DataDownload", + "name": "WQP Station (sites) service", + "description": "Base endpoint for downloading station (monitoring location) data and metadata via REST.", + "contentUrl": "https://www.waterqualitydata.us/data/Station/search", + "encodingFormat": [ + "application/json", + "text/csv", + "application/xml" + ] + }, + { + "@type": "DataDownload", + "name": "WQP Result (analytical results) service", + "description": "Base endpoint for downloading discrete water-quality result records via REST.", + "contentUrl": "https://www.waterqualitydata.us/data/Result/search", + "encodingFormat": [ + "application/json", + "text/csv", + "application/xml" + ] + }, + { + "@type": "DataDownload", + "name": "WQP OGC services (WMS/WFS)", + "description": "OGC-compliant WMS/WFS services for mapping and feature access based on WQP search parameters.", + "contentUrl": "https://www.waterqualitydata.us/ogcservices/", + "encodingFormat": [ + "text/html", + "application/xml", + "application/geo+json" + ] + } + ], + "citation": [ + { + "@type": "ScholarlyArticle", + "name": "Water quality data for national-scale aquatic research: The Water Quality Portal", + "author": [ + { + "@type": "Person", + "name": "E. K. Read" + } + ], + "isPartOf": { + "@type": "Periodical", + "name": "Water Resources Research" + }, + "datePublished": "2017", + "identifier": [ + { + "@type": "PropertyValue", + "propertyID": "doi", + "value": "10.1002/2016WR019993" + } + ], + "sameAs": "https://doi.org/10.1002/2016WR019993" + } + ], + "about": [ + { + "@type": "Thing", + "name": "Water quality" + }, + { + "@type": "Thing", + "name": "Hydrogeochemistry" + }, + { + "@type": "Thing", + "name": "Environmental monitoring" + }, + { + "@type": "Thing", + "name": "Surface water" + }, + { + "@type": "Thing", + "name": "Groundwater" + } + ] +} diff --git a/data/objects/summoned/generated/Water_Quality_Portal/webpage.jsonld b/data/objects/summoned/generated/Water_Quality_Portal/webpage.jsonld new file mode 100644 index 0000000..6b5873f --- /dev/null +++ b/data/objects/summoned/generated/Water_Quality_Portal/webpage.jsonld @@ -0,0 +1,44 @@ +{ + "@context": "https://schema.org/", + "@type": "WebPage", + "comment": "This dataset metadata was generated by AI.", + "@id": "https://www.waterqualitydata.us/", + "name": "Water Quality Portal (WQP)", + "description": "Webpage for the Water Quality Portal: integrated US water quality data from USGS NWIS and EPA WQX, with web interface and REST/API access. National Water Quality Monitoring Council, US EPA, USGS.", + "url": "https://www.waterqualitydata.us/", + "inLanguage": "en", + "isPartOf": { + "@type": "WebSite", + "name": "Water Quality Portal", + "url": "https://www.waterqualitydata.us/" + }, + "about": { + "@type": "Dataset", + "name": "Water Quality Portal (WQP)", + "url": "https://www.waterqualitydata.us/#dataset" + }, + "publisher": [ + { + "@type": "Organization", + "name": "National Water Quality Monitoring Council", + "url": "https://www.epa.gov/awma/national-water-quality-monitoring-council" + }, + { + "@type": "Organization", + "name": "U.S. Environmental Protection Agency (EPA)", + "url": "https://www.epa.gov/" + } + ], + "mainEntity": { + "@type": "Dataset", + "name": "Water Quality Portal (WQP)", + "url": "https://www.waterqualitydata.us/#dataset" + }, + "keywords": [ + "water quality", + "WQP", + "USGS", + "US EPA", + "hydrogeochemistry" + ] +} diff --git a/data/objects/summoned/generated/sitemap.xml b/data/objects/summoned/generated/sitemap.xml new file mode 100644 index 0000000..bdd3a6b --- /dev/null +++ b/data/objects/summoned/generated/sitemap.xml @@ -0,0 +1,227 @@ + + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/sitemap.xml +2026-02-16T17:46:19Z + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_bioclim.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_canaryclim_climatologies.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_cerra_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_climatologies.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_climatologies.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_drought_indices.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_monthly.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial_bioclim.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_w5e5_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/datacatalog.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Consensus_Land_Cover/consensus-land-cover.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Consensus_Land_Cover/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/FLO1K/flo1k.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/FLO1K/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/G-RUN/g-run.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/G-RUN/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GFC/gfc.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GFC/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GHSL/ghsl.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GHSL/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GPP_MOD17/gpp_mod17.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GPP_MOD17/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GRACE-REC/grace-rec.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GRACE-REC/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/global-multi-layer-soil-moisture.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Tree_Density/global-tree-density.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Tree_Density/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/HydroSHEDS/hydrosheds.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/HydroSHEDS/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Hydrography90m/hydrography90m.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Hydrography90m/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MERIT_DEM/merit-dem.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MERIT_DEM/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/annual-nlcd.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/datacatalog.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/exotic-annual-grass.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/legacy-nlcd.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/nalcms.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/rcmap.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Shale_Network/shale-network.jsonld +2026-02-16T11:01:33-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Shale_Network/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/SoilGrids2/soilgrids2.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/SoilGrids2/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/TerraClimate/terraclimate.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/TerraClimate/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/WATERBASE/waterbase.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/WATERBASE/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Water_Quality_Portal/water-quality-portal.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Water_Quality_Portal/webpage.jsonld +2026-02-16T10:46:20-06:00 + + diff --git a/data/objects/summoned/sitemap.xml b/data/objects/summoned/sitemap.xml new file mode 100644 index 0000000..d47df06 --- /dev/null +++ b/data/objects/summoned/sitemap.xml @@ -0,0 +1,295 @@ + + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/sitemap.xml +2026-02-16T17:46:19Z + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/sitemap.xml +2026-02-16T17:46:19Z + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/glim/1560991f9071fd8c168bf8bff8d5abcdaf7d3370.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/glim/42cc768d19310666e11275e0ef420914c5d10868.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/glim/5cbde8720e62b2e74ea38d7cdfdafd747405093f.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/glim/b828dd7f22d629058b801d915af937420b4de1ab.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/glim/fc3fbb167c441f59021612f8261b51694b49904b.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/gpp/2d78c4242a108f70ea2c0604964dc095b34bfd7b.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/gpp/73b23fc49e03311c4a4abf85208ae8a0fd114aa7.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/gpp/a1e2f82711848e68b9e20dbd8019b3360e4e2ad5.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/gpp/bc4d190917216d7d0db70cd10d64f3e7a1d54d03.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/gpp/ef65272b4c4da100943c1142f85457f41f9f03c5.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/nitrogen/4ef2e6a6cdec4cb04e059b588a790f2817aa9959.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/nitrogen2/5588a6fb892f4d5b0a21b503b63dc0586c256de8.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/nitrogen2/70eeed8a265bb642c401e0e51c98103a875b6fb1.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/nitrogen2/a1e2f82711848e68b9e20dbd8019b3360e4e2ad5.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/nitrogen2/eba7bc7d2f6dc818108833457f776e065ae9521c.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/stac/62431785c83ca0c826bdb5cca1dd9eeb3cc0655b.jsonld +2023-11-09T11:27:19-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_bioclim.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_canaryclim_climatologies.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_cerra_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_climatologies.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_ch_highres_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_climatologies.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_drought_indices.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_monthly.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_trace21k_centennial_bioclim.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/chelsa_w5e5_daily.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/datacatalog.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/CHELSA/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Consensus_Land_Cover/consensus-land-cover.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Consensus_Land_Cover/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/FLO1K/flo1k.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/FLO1K/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/G-RUN/g-run.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/G-RUN/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GFC/gfc.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GFC/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GHSL/ghsl.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GHSL/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GPP_MOD17/gpp_mod17.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GPP_MOD17/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GRACE-REC/grace-rec.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/GRACE-REC/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/global-multi-layer-soil-moisture.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Multi-layer_Soil_Moisture/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Tree_Density/global-tree-density.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Global_Tree_Density/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/HydroSHEDS/hydrosheds.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/HydroSHEDS/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Hydrography90m/hydrography90m.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Hydrography90m/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MERIT_DEM/merit-dem.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MERIT_DEM/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/annual-nlcd.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/datacatalog.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/exotic-annual-grass.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/legacy-nlcd.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/nalcms.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/rcmap.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/MRLC_NLCD/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Shale_Network/shale-network.jsonld +2026-02-16T11:01:33-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Shale_Network/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/SoilGrids2/soilgrids2.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/SoilGrids2/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/TerraClimate/terraclimate.jsonld +2026-02-16T11:16:42-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/TerraClimate/webpage.jsonld +2026-02-16T09:22:43-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/WATERBASE/waterbase.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/WATERBASE/webpage.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Water_Quality_Portal/water-quality-portal.jsonld +2026-02-16T10:46:20-06:00 + + +https://raw.githubusercontent.com/earthcube/communityCollections/refs/heads/3-generate-jsonld-datasets-from-websites/data/objects/summoned/generated/Water_Quality_Portal/webpage.jsonld +2026-02-16T10:46:20-06:00 + + diff --git a/docs/jsonld-validation-plan.md b/docs/jsonld-validation-plan.md new file mode 100644 index 0000000..2cb3be2 --- /dev/null +++ b/docs/jsonld-validation-plan.md @@ -0,0 +1,26 @@ +# JSON-LD Metadata Validation Plan + +## Summary + +Validate generated JSON-LD against the authoritative dataset webpage, linked download targets, cited papers, and repository or data-release pages. Corrections should be conservative: revise only fields supported by visible source evidence, and leave an inspectable Git diff. + +## Manual Checks Added + +- Expand source-listed variables into one `variableMeasured` entry per variable. Use the physical variable label as `name` and put short codes such as `bio01`, `tas`, or `lossyear` in `alternateName`. +- Include all citations shown by the source page. When a page has both `Model Citation` and `Data Citation`, represent both as separate structured citation objects. +- Use the exact URL behind a source page's Download button or direct data/API endpoint for `distribution[].contentUrl`; do not use a generic portal root when a more specific target is available. +- Include variables listed in expandable menus, layer lists, and property tables, not only variables visible in the initial page text. +- For each `variableMeasured`, include `temporalCoverage`. Use the source-supported variable or dataset temporal range when available; otherwise use `Static`. +- For each `variableMeasured`, include `spatialCoverage`. Use variable-specific spatial coverage when available; otherwise use `not detected`. + +## Generation Safeguards + +- The generation prompt requires separate variable rows, structured citation arrays, exact download targets, and variable-level temporal and spatial coverage fields. +- `generate_jsonld.py` extracts source-page download links, citation text, and variable rows and passes them into the generation prompt. +- `generate_jsonld.py` emits review warnings when generated JSON-LD still contains lumped variable names, omits source-listed variables, lacks variable-level temporal or spatial coverage, contains plain-string citations, or distributions omit exact source-page download links. + +## Validation + +- Run `python3 scripts/validate_jsonld_batch.py data/objects/summoned/generated`. +- Run `git diff --check`. +- Review `git diff` for metadata-only changes and confirm no unrelated files are modified. diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 0000000..7c4eec1 --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,5 @@ +site_name: Geocodes Metadata +site_url: https://earthcube.github.io/communityCollections/site/ +#theme: 'material' +#theme: 'mkdocs' + diff --git a/prompts/jsonld-generation-prompt.txt b/prompts/jsonld-generation-prompt.txt new file mode 100644 index 0000000..3843b55 --- /dev/null +++ b/prompts/jsonld-generation-prompt.txt @@ -0,0 +1,78 @@ +You are generating a JSON-LD (JSON for Linking Data) description for a scientific dataset following Schema.org vocabulary. + +**Task**: Create a valid JSON-LD document for the following dataset. + +**Dataset Information** (fill from spreadsheet; no fixed URLs): +- Name: {DATASET_NAME} +- URL: {URL} +- Description: {DESCRIPTION} +- Group/Category: {GROUP} +- Creator: {CREATOR} +- Provider: {PROVIDER} +- Publisher: {PUBLISHER} +- Keywords: {KEYWORDS} +- Spatial Coverage: {SPATIAL_COVERAGE} (box format: "west,south east,north", e.g. "20,-40 50,10") + +**Type-specific guidance** (choose the branch that matches the spreadsheet "Type" and subtype): + +• **Webpage + ld+json(figshare)** (Figshare article or collection): + Extracted Metadata: Hosted on Figshare. Infer creator, citation, temporal coverage, and variables from the Figshare page and any linked paper (e.g. DOI or journal article). Include distribution with the Figshare article or collection URL and DOI if available. Creator/publisher: infer from Figshare page (authors and Figshare as publisher). Use @id as dataset URL or DOI (e.g. Figshare article URL with #dataset or DOI). Figshare often uses CC-BY. + +• **Webpage + Listing** (download or listing page, not Figshare): + Extracted Metadata: Infer creator, publisher, temporal coverage, variables, and distribution from the download or listing page and any linked documentation. Include distribution with the main page URL and any data access or download URLs. Use @id as the dataset or download page URL with #dataset. + +• **Webpage + Catalog** (site that lists multiple datasets): + Extracted Metadata: The site is a catalog of datasets. You may describe the catalog as a single Dataset or as a DataCatalog; if describing one representative or aggregate dataset, infer creator, publisher, temporal coverage, variables, and distribution from the catalog page. Include distribution to the catalog URL and, if applicable, links to key datasets or download areas. + +• **Webpage + Dataset** (single dataset on a webpage): + Extracted Metadata: Infer creator, publisher, temporal coverage, variables, and distribution from the dataset page. Include distribution with the page URL and any direct download or data access links. + +• **Webpage + earthengine** (Google Earth Engine or similar): + Extracted Metadata: Infer creator, publisher, temporal coverage, and variables from the page. Include distribution with the landing page URL and any Earth Engine asset or download information. + +• **Webpage** (no subtype; generic webpage or DOI landing): + Extracted Metadata: Infer creator, publisher, temporal coverage, variables, and distribution from the webpage or DOI resolver (e.g. CUAHSI HIS, HydroShare, Zenodo). Include distribution with the landing page URL and any data access or download links. + +• **Sitemap** (sitemap or catalog API URL): + Extracted Metadata: Data are discoverable via a sitemap or catalog (e.g. GeoNetwork). If a record or catalog URL is available, include it. Infer creator (e.g. from the organization), publisher, temporal coverage, variables, and distribution (catalog URL and/or file server or API). Include distribution with the sitemap/catalog URL and, if known, the main data download or record URL. + +• **WebAPI** (data portal or API): + Extracted Metadata: The resource is a data portal or API. Describe as a Dataset (or DataCatalog if it aggregates many datasets). Include distribution with the portal URL and API endpoints if known; encodingFormat may include application/json, text/csv, application/xml. temporalCoverage may be "ongoing" or a range as appropriate for a live service. + +• **WebPage:Dataset or Dataset** (data hub item or standalone dataset): + Extracted Metadata: Hosted on a data hub or as a standalone dataset (e.g. EEA Data Hub, PANGAEA, Zenodo). Infer creator, publisher, temporal coverage, variables, and distribution from the hub item or landing page. Include distribution with the hub/dataset URL and any direct download or API links. + +**Additional extracted or inferred metadata** (optional; from page content or prior knowledge): +{EXTRACTED_METADATA} + +**Source-page fidelity requirements**: +- If the source page has a variable table, expandable variable menu, layer list, or property list, create one `variableMeasured` entry per source-listed variable. Do not lump ranges or groups such as "BIO1-BIO19", "tas/tasmax/tasmin", "bands 1-7", or "all layers" into one entry when the page lists individual variables. +- Use the physically meaningful variable name from the source page as `variableMeasured[].name`. Put short codes such as `bio01`, `tas`, `pr`, `lossyear`, or `treecover2000` in `alternateName`. +- For each `variableMeasured` entry, include `temporalCoverage`. If the variable is static or no variable-specific temporal range can be detected, set it to "Static"; otherwise use the source-supported variable or dataset temporal range. +- For each `variableMeasured` entry, include `spatialCoverage`. If no variable-specific spatial coverage or spatial range can be detected, set it to "not detected". +- If the source page has both "Model Citation" and "Data Citation", include both as separate entries in `citation`. Do not drop either one. +- Always represent `citation` as an array of structured `CreativeWork`, `ScholarlyArticle`, or `Dataset` objects; do not use a plain citation string. +- For `distribution[].contentUrl`, use the exact URL linked from the source page's Download button or direct data/API endpoint when available. Do not use a generic portal root if a more specific download link, bucket prefix, DOI landing page, API endpoint, or file list is available. +- If a source page lists several download links for the same dataset, include each materially different download target as a separate `distribution` entry with a clear `name`. + +**Reference Example** (structure only; no fixed URLs): +{EXAMPLE_JSONLD} + +**Requirements** (apply to all types): +1. Use Schema.org vocabulary (https://schema.org/) +2. Set @context to {{"@vocab": "https://schema.org/"}} +3. Set @type to "Dataset" (or "DataCatalog" only when describing a catalog of datasets as a whole) +4. Include @id with the dataset URL or a stable identifier (e.g. landing page URL with #dataset or DOI) +5. Include all available metadata fields +6. Include distribution with contentUrl(s); for each distribution use "encodingFormat" as a JSON array of strings (e.g. ["text/html"], ["application/json", "text/csv"]) +7. temporalCoverage: use "YYYY-MM-DD/YYYY-MM-DD" or "ongoing" / ".." as appropriate +8. spatialCoverage: Use Place with geo containing GeoShape. The box format MUST be: "west,south east,north" (e.g. "20,-40 50,10") +9. Include license and access information when known +10. Use proper JSON-LD structure (arrays for multiple values, nested objects where appropriate) +11. Set "keywords" as a JSON array of strings — never a single semicolon- or comma-separated string +12. Set "encodingFormat" (at dataset level and in each distribution) as a JSON array of strings — never a single semicolon- or comma-separated string +13. Set "citation" as a JSON array of structured objects — never as a single string +14. Each `variableMeasured` object must include `temporalCoverage` and `spatialCoverage` +15. Add exactly: "comment": "This dataset metadata was generated by AI." + +**Output**: Provide ONLY valid JSON-LD, no additional text or explanation. diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..fdb4b2c --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,147 @@ +# JSON-LD Generation Scripts + +## Setup + +### Getting the datasets.csv file + +The script requires a `datasets.csv` file exported from the Google Sheet. To create it: + +**Option 1: Download directly (Recommended)** +1. Open the Google Sheet: https://docs.google.com/spreadsheets/d/1pqZpMWqQFwUrleHXPbvXqXX59Xcj1Yrtqt2nJTh1reM/edit?gid=1162616600 +2. Go to the "Datasets" tab +3. File → Download → Comma Separated Values (.csv) +4. Save as `datasets.csv` in the project root directory + +**Option 2: Use the fetch script (recommended)** +```bash +# Download the spreadsheet as datasets.csv (sheet must be shared so "Anyone with the link" can view) +python scripts/fetch_spreadsheet.py +# Or save to a different file: +python scripts/fetch_spreadsheet.py path/to/datasets.csv +``` + +**Option 3: Use the sheet URL directly when generating** +```bash +# Use the Google Sheets export URL as the CSV source (no local file needed) +python scripts/generate_jsonld.py --csv "https://docs.google.com/spreadsheets/d/1pqZpMWqQFwUrleHXPbvXqXX59Xcj1Yrtqt2nJTh1reM/export?format=csv&gid=1162616600" --next +``` + +**Note**: The `datasets.csv` file is gitignored and will not be committed to the repository. + +1. Activate the virtual environment (if using one): + ```bash + # Windows + venv\Scripts\activate + + # Linux/Mac + source venv/bin/activate + ``` + +2. Install required packages: + ```bash + pip install -r scripts/requirements.txt + ``` + + Or install specific AI service: + ```bash + # For NRP or OpenAI + pip install openai requests beautifulsoup4 python-dotenv + # OR for Anthropic + pip install anthropic requests beautifulsoup4 python-dotenv + # OR for Gemini + pip install google-generativeai requests beautifulsoup4 python-dotenv + ``` + +3. Set up your API key: + + **Use .env file (Recommended)** + ```bash + # Copy the example file + cp .env.example .env + + # Edit .env and add your API key + # See .env.example for all available options and NRP model information + ``` + + **Alternative: Set environment variable directly** + ```bash + # Linux/Mac + export OPENAI_API_KEY="your-key-here" + export NRP_API_KEY="your-key-here" + export GEMINI_API_KEY="your-key-here" + + # Windows (PowerShell) + $env:OPENAI_API_KEY="your-key-here" + $env:NRP_API_KEY="your-key-here" + $env:GEMINI_API_KEY="your-key-here" + + # Windows (CMD) + set OPENAI_API_KEY=your-key-here + set NRP_API_KEY=your-key-here + set GEMINI_API_KEY=your-key-here + ``` + + **For NRP**: Get your API key from https://nrp.ai/documentation/userdocs/ai/llm-managed/ + + **For OpenAI/ChatGPT**: Get your API key from https://platform.openai.com/api-keys + + **For Gemini**: Get your API key from https://aistudio.google.com/apikey (free tier available with .edu email) + +## Usage + +### Test with a single URL +```bash +# Using Gemini (default, no --ai-service needed) +python scripts/generate_jsonld.py --test-url "http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/" + +# Or use OpenAI/ChatGPT, NRP, or Anthropic if you have their API keys +python scripts/generate_jsonld.py --ai-service openai --test-url "http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/" +python scripts/generate_jsonld.py --ai-service nrp --test-url "http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/" +python scripts/generate_jsonld.py --ai-service gemini --test-url "http://hydro.iis.u-tokyo.ac.jp/~yamadai/MERIT_DEM/" +``` + +### Process datasets from CSV +```bash +# Process all datasets that need JSON-LD (using Gemini by default) +python scripts/generate_jsonld.py --csv datasets.csv + +# Process only first 5 datasets (for testing) +python scripts/generate_jsonld.py --csv datasets.csv --limit 5 + +# Alternative: Use OpenAI, Anthropic, or Gemini if you have their API keys +python scripts/generate_jsonld.py --ai-service openai --csv datasets.csv +python scripts/generate_jsonld.py --ai-service anthropic --csv datasets.csv +python scripts/generate_jsonld.py --ai-service gemini --csv datasets.csv +``` + +### Options +- `--csv`: Path to CSV file (default: `datasets.csv`) +- `--output-dir`: Output directory for JSON-LD files (default: `data/objects/summoned/generated`) +- `--ai-service`: Choose `gemini` (default), `nrp`, `openai`, or `anthropic` (optional - defaults to `gemini`) +- `--api-key`: API key (or use environment variable) +- `--model`: Model name (optional, uses defaults) + - Gemini default: `gemini-2.0-flash` (other options: `gemini-2.5-flash`, `gemini-2.5-pro`) + - NRP default: `qwen3` (other options: `llama3-sdsc`, `gpt-oss`, `gorilla`, `olmo`, `gemma3`, `kimi`, etc.) + - OpenAI default: `gpt-4o` + - Anthropic default: `claude-3-5-sonnet-20241022` +- `--limit`: Limit number of datasets to process +- `--test-url`: Test with a single URL instead of CSV + +## Output + +Generated JSON-LD files are saved to the output directory with filenames like: +`DatasetName_hash.jsonld` + +## Workflow + +1. Script reads the CSV file +2. Filters datasets where `hasJSONLD?` is `FALSE`, `#ERROR!`, or empty +3. For each dataset: + - **Gemini (default)**: Passes URL directly to AI, which uses URL Context Tool to browse/analyze the webpage + - **Other AI services (OpenAI, Anthropic, NRP)**: Fetches HTML, extracts text content using BeautifulSoup, then sends to AI + - Uses AI to detect datasets and extract metadata + - Generates JSON-LD using the extracted metadata + - Saves the JSON-LD file + +**Note**: Gemini is the default because it can browse URLs directly. Other services require HTML fetching and text extraction. + diff --git a/scripts/generate_jsonld.py b/scripts/generate_jsonld.py new file mode 100644 index 0000000..d053fb4 --- /dev/null +++ b/scripts/generate_jsonld.py @@ -0,0 +1,1299 @@ +#!/usr/bin/env python3 +""" +Generate JSON-LD descriptions for datasets from Google Sheet using AI. + +This script reads a CSV export of the Google Sheet, processes datasets +that need JSON-LD (hasJSONLD? = FALSE or #ERROR!), and generates +JSON-LD descriptions using AI prompts. +""" + +import csv +import hashlib +import io +import json +import os +import re +import sys +import time +import argparse +import threading +from pathlib import Path +from typing import Dict, List, Optional +from urllib.parse import urlparse + +# Try to load .env file if python-dotenv is available +try: + from dotenv import load_dotenv + # Load .env from project root (parent of scripts directory) + PROJECT_ROOT_FOR_ENV = Path(__file__).parent.parent + dotenv_path = PROJECT_ROOT_FOR_ENV / '.env' + # Use override=True to ensure environment variables are loaded + load_dotenv(dotenv_path, override=True) +except ImportError: + pass # dotenv is optional + +# Try to import AI client libraries (user needs to install) +try: + import openai + OPENAI_AVAILABLE = True +except ImportError: + OPENAI_AVAILABLE = False + +try: + import anthropic + ANTHROPIC_AVAILABLE = True +except ImportError: + ANTHROPIC_AVAILABLE = False + +# Try to import Gemini (try new package first, fallback to deprecated) +try: + # Try new google.genai package (supports URL Context Tool) + from google import genai as new_genai + from google.genai.types import Tool, UrlContext + from google.genai import errors as new_genai_errors + GEMINI_NEW_API = True + GEMINI_AVAILABLE = True +except ImportError: + GEMINI_NEW_API = False + new_genai_errors = None + try: + # Fallback to deprecated google.generativeai package + import google.generativeai as genai + from google.api_core import exceptions as google_exceptions + GEMINI_AVAILABLE = True + except ImportError: + GEMINI_AVAILABLE = False + google_exceptions = None + new_genai = None + Tool = None + UrlContext = None + +# Standard libraries +import requests +from bs4 import BeautifulSoup + +# Constants +API_TIMEOUT_SECONDS = 360.0 # 6 minutes +MAX_RETRIES = 1 +CONTENT_LIMIT_DETECTION = 3000 # Characters for detection prompt (reduced to avoid timeouts) +CONTENT_LIMIT_ANTHROPIC = 10000 # Characters for Anthropic detection +EXAMPLE_JSONLD_LIMIT = 2000 # Characters for example JSON-LD in prompt +WEBPAGE_TIMEOUT = 30 # Seconds for webpage fetching +FILENAME_MAX_LENGTH = 50 # Maximum length for dataset name in filename +URL_HASH_LENGTH = 8 # Length of URL hash in filename +HTML_FALLBACK_LIMIT = 10000 # Characters to return if HTML parsing fails + +# Server error codes to detect +SERVER_ERROR_CODES = ['500', '502', '503', '504', 'internal server error'] + +# Connection error patterns (should be retried) +CONNECTION_ERROR_PATTERNS = [ + 'connection refused', 'connection reset', 'connection error', + 'upstream connect error', 'disconnect/reset', 'delayed connect error' +] + +# CSV field names +CSV_FIELDS = { + 'HAS_JSONLD': 'hasJSONLD?', + 'WEBPAGE_URL': 'Dataset Webpage URL', + 'NAME': 'Dataset Name', + 'DESCRIPTION': 'Description', + 'GROUP': 'Group', + 'CREATOR': 'Creator', + 'PROVIDER': 'Provider', + 'PUBLISHER': 'Publisher', + 'KEYWORDS': 'Keywords', + 'BOX_LON_MIN': 'box_lon_min', + 'BOX_LAT_MIN': 'box_lat_min', + 'BOX_LON_MAX': 'box_lon_max', + 'BOX_LAT_MAX': 'box_lat_max', +} + +# Project root path (parent of scripts directory) +PROJECT_ROOT = Path(__file__).parent.parent +PROMPTS_DIR = PROJECT_ROOT / "prompts" +DATA_DIR = PROJECT_ROOT / "data" / "objects" / "summoned" + +# Added to every generated JSON-LD to disclose AI-generated metadata +AI_GENERATED_COMMENT = "This dataset metadata was generated by AI." + + +class AIClient: + """Abstract base class for AI clients.""" + + def detect_datasets(self, url: str, context: Dict) -> Dict: + """Detect datasets by analyzing the URL directly (AI will browse/analyze the webpage).""" + raise NotImplementedError + + def generate_jsonld(self, metadata: Dict, example_jsonld: str) -> str: + """Generate JSON-LD from metadata.""" + raise NotImplementedError + + def _retry_with_timeout(self, func, *args, **kwargs): + """Helper method to retry a function call with timeout handling.""" + for attempt in range(MAX_RETRIES): + try: + return func(*args, **kwargs) + except TimeoutError as e: + if attempt < MAX_RETRIES - 1: + print(f" Timeout occurred, retrying ({attempt + 1}/{MAX_RETRIES})...") + continue + else: + raise + + def _extract_json_from_response(self, response: str) -> str: + """Extract and validate JSON from API response.""" + try: + # Remove markdown code blocks if present + if '```json' in response: + # Extract content between ```json and ``` + start = response.find('```json') + 7 + end = response.find('```', start) + if end > start: + response = response[start:end].strip() + elif '```' in response: + # Extract content between ``` and ``` + start = response.find('```') + 3 + end = response.find('```', start) + if end > start: + response = response[start:end].strip() + + # Find JSON object or array + if '{' in response: + start = response.find('{') + end = response.rfind('}') + 1 + json_str = response[start:end] + json_data = json.loads(json_str) + # Fix spatial coverage format if needed + json_data = self._fix_spatial_coverage(json_data) + # Ensure keywords is a JSON array (not semicolon/comma-separated string) + json_data = self._fix_keywords(json_data) + json_data = self._fix_encoding_format(json_data) + json_data = self._add_ai_generated_comment(json_data) + return json.dumps(json_data, indent=2) + elif '[' in response: + # Handle JSON arrays + start = response.find('[') + end = response.rfind(']') + 1 + json_str = response[start:end] + json_data = json.loads(json_str) + return json.dumps(json_data, indent=2) + return response + except (json.JSONDecodeError, ValueError): + return response + + def _fix_spatial_coverage(self, data: Dict) -> Dict: + """Fix spatial coverage box format to match Schema.org standard. + + Converts "20 -40 50 10" to "20,-40 50,10" format. + """ + if isinstance(data, dict) and 'spatialCoverage' in data: + spatial = data['spatialCoverage'] + if isinstance(spatial, dict) and 'geo' in spatial: + geo = spatial['geo'] + if isinstance(geo, dict) and 'box' in geo: + box = geo['box'] + if isinstance(box, str): + # Fix format: "20 -40 50 10" -> "20,-40 50,10" + parts = box.split() + if len(parts) == 4 and ',' not in box: + try: + # Convert to proper format: "west,south east,north" + west, south, east, north = map(float, parts) + geo['box'] = f"{west},{south} {east},{north}" + except (ValueError, TypeError): + pass # If conversion fails, leave as is + return data + + def _fix_keywords(self, data: Dict) -> Dict: + """Ensure keywords is a JSON array of strings. Schema.org expects an array.""" + if not isinstance(data, dict) or 'keywords' not in data: + return data + val = data['keywords'] + if isinstance(val, list): + data['keywords'] = [str(item).strip() for item in val if item] + return data + if isinstance(val, str): + val = val.strip() + if not val: + return data + # Split by semicolon or comma, strip each, filter empty + parts = re.split(r'[;,]', val) + data['keywords'] = [p.strip() for p in parts if p.strip()] + return data + return data + + def _fix_encoding_format(self, data: Dict) -> Dict: + """Ensure encodingFormat is a JSON array of strings; split any string (or list element) containing ; or ,. In-place, recursive.""" + if isinstance(data, dict): + if 'encodingFormat' in data: + val = data['encodingFormat'] + if isinstance(val, str): + val = val.strip() + if val and (';' in val or ',' in val): + data['encodingFormat'] = [p.strip() for p in re.split(r'\s*[;,]\s*', val) if p.strip()] + elif val: + data['encodingFormat'] = [val] + elif isinstance(val, list): + out = [] + for item in val: + if isinstance(item, str) and item.strip(): + if ';' in item or ',' in item: + out.extend(p.strip() for p in re.split(r'\s*[;,]\s*', item) if p.strip()) + else: + out.append(item.strip()) + elif item: + out.append(str(item).strip()) + data['encodingFormat'] = out + for v in data.values(): + self._fix_encoding_format(v) + elif isinstance(data, list): + for item in data: + self._fix_encoding_format(item) + return data + + def _add_ai_generated_comment(self, data: Dict) -> Dict: + """Add a top-level comment that this dataset metadata was generated by AI. Inserts after @type.""" + if not isinstance(data, dict): + return data + existing = data.get("comment") + if existing is None: + new_comment = AI_GENERATED_COMMENT + elif isinstance(existing, list): + new_comment = existing + [AI_GENERATED_COMMENT] if AI_GENERATED_COMMENT not in existing else existing + elif existing == AI_GENERATED_COMMENT: + return data + else: + new_comment = [existing, AI_GENERATED_COMMENT] + out = {} + for k, v in data.items(): + if k == "comment": + continue + out[k] = v + if k == "@type": + out["comment"] = new_comment + if "comment" not in out: + out["comment"] = new_comment + return out + + def _is_server_error(self, error: Exception) -> bool: + """Check if an exception represents a server error.""" + error_str = str(error).lower() + return any(code in error_str for code in SERVER_ERROR_CODES) + + def _call_api_with_timeout(self, api_call_func): + """Execute API call with threading-based timeout enforcement.""" + result = [None] + exception = [None] + + def api_call(): + try: + result[0] = api_call_func() + except Exception as e: + exception[0] = e + + thread = threading.Thread(target=api_call) + thread.daemon = True + thread.start() + thread.join(timeout=API_TIMEOUT_SECONDS) + + if thread.is_alive(): + print(f" Request exceeded {API_TIMEOUT_SECONDS/60:.0f} minute timeout") + raise TimeoutError(f"API request timed out after {API_TIMEOUT_SECONDS/60:.0f} minutes") + + if exception[0]: + error_msg = str(exception[0]).lower() + # Check for timeout errors + if "timeout" in error_msg or "timed out" in error_msg: + raise TimeoutError("API request timed out") + # Check for connection errors + if any(err in error_msg for err in CONNECTION_ERROR_PATTERNS): + raise TimeoutError(f"Connection error: {exception[0]}") + # Check for server errors + if self._is_server_error(exception[0]): + raise Exception(f"API server error: {exception[0]}") + # Re-raise other exceptions + raise exception[0] + + if result[0] is None: + raise TimeoutError("API request timed out") + + return result[0] + + def _load_prompt_template(self, filename: str) -> str: + """Load a prompt template from the prompts directory.""" + prompt_path = PROMPTS_DIR / filename + if not prompt_path.exists(): + raise FileNotFoundError(f"Prompt template not found: {prompt_path}") + with open(prompt_path, 'r', encoding='utf-8') as f: + return f.read() + + def _format_detection_prompt(self, url: str, context: Dict, content: str = None) -> str: + """Format the dataset detection prompt. + + Args: + url: The webpage URL + context: Context dictionary from CSV + content: Optional HTML text content (for non-Gemini services) + """ + template = self._load_prompt_template("dataset-detection-prompt.txt") + + # Format content section based on whether content is provided + if content: + # For services that fetch HTML: include the extracted text content + content_limited = content[:CONTENT_LIMIT_DETECTION] if len(content) > CONTENT_LIMIT_DETECTION else content + content_section = f"""**Webpage Content** (extracted text): +{content_limited} + +**Note**: The above is the extracted text content from the webpage. Please analyze it to identify datasets and extract metadata.""" + else: + # For Gemini with URL Context Tool: instruct to browse the URL + content_section = f"""**Important**: Please analyze the content at this URL: {url} + +If you have URL Context Tool access, fetch and analyze the webpage content directly. Otherwise, use your knowledge of the domain and URL structure to infer what datasets might be available.""" + + return template.format( + URL=url, + CONTENT_SECTION=content_section, + DATASET_NAME=context.get(CSV_FIELDS['NAME'], ''), + GROUP=context.get(CSV_FIELDS['GROUP'], ''), + DESCRIPTION=context.get(CSV_FIELDS['DESCRIPTION'], '') + ) + + def _format_generation_prompt(self, metadata: Dict, example_jsonld: str) -> str: + """Format the JSON-LD generation prompt.""" + template = self._load_prompt_template("jsonld-generation-prompt.txt") + # Handle empty example_jsonld + escaped_example = (example_jsonld[:EXAMPLE_JSONLD_LIMIT] if example_jsonld else '').replace('{', '{{').replace('}', '}}') + escaped_metadata = json.dumps(metadata.get('extracted', {}), indent=2).replace('{', '{{').replace('}', '}}') + + return template.format( + DATASET_NAME=metadata.get('name', ''), + URL=metadata.get('url', ''), + DESCRIPTION=metadata.get('description', ''), + GROUP=metadata.get('group', ''), + CREATOR=metadata.get('creator', ''), + PROVIDER=metadata.get('provider', ''), + PUBLISHER=metadata.get('publisher', ''), + KEYWORDS=metadata.get('keywords', ''), + SPATIAL_COVERAGE=metadata.get('spatial_coverage', ''), + EXTRACTED_METADATA=escaped_metadata, + EXAMPLE_JSONLD=escaped_example + ) + + +class OpenAIClient(AIClient): + """OpenAI API client.""" + + def __init__(self, api_key: str, model: str = "gpt-4o", base_url: str = None): + self.client = openai.OpenAI(api_key=api_key, base_url=base_url) + self.model = model + + def _call_api(self, prompt: str, system_prompt: str = None, operation: str = "processing") -> str: + """Make API call to OpenAI with timeout enforcement.""" + messages = [] + if system_prompt: + messages.append({"role": "system", "content": system_prompt}) + messages.append({"role": "user", "content": prompt}) + + print(f" Sending request to API for {operation} (this may take 1-6 minutes)...") + + def api_call(): + return self.client.chat.completions.create( + model=self.model, + messages=messages, + temperature=0.3, + timeout=API_TIMEOUT_SECONDS + ) + + response = self._call_api_with_timeout(api_call) + print(f" Received response") + if not response.choices or not response.choices[0].message.content: + raise ValueError("Empty response from API") + return response.choices[0].message.content + + def detect_datasets(self, url: str, context: Dict, webpage_content: str = None) -> Dict: + """Detect datasets using OpenAI by analyzing webpage content. + + Args: + url: The webpage URL + context: Context dictionary from CSV + webpage_content: Optional pre-fetched HTML text content (if None, will fetch) + """ + # Fetch and extract content if not provided + if webpage_content is None: + print(" Fetching webpage content...") + html = fetch_webpage(url) + if html: + webpage_content = extract_text_content(html) + print(f" Extracted {len(webpage_content)} characters of text content") + else: + webpage_content = "" + print(" Warning: Could not fetch webpage content") + + prompt = self._format_detection_prompt(url, context, content=webpage_content) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 10000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + def call_detect(): + response = self._call_api(prompt, operation="dataset detection") + # Extract JSON from response (handles responses with extra text) + json_str = self._extract_json_from_response(response) + try: + parsed = json.loads(json_str) + # If the response is already a dict with 'datasets' key, return it + # Otherwise, wrap it in a dict with 'datasets' array + if isinstance(parsed, dict): + if 'datasets' not in parsed and ('name' in parsed or 'raw_response' in parsed): + # Old format: single dataset, wrap in array + parsed = {'datasets': [parsed]} + return parsed + elif isinstance(parsed, list): + # Response is already an array, wrap in dict + return {'datasets': parsed} + else: + return {"raw_response": response, "error": "Unexpected response format"} + except json.JSONDecodeError as e: + print(f" Debug: JSON parsing error: {e}") + print(f" Debug: Response preview: {response[:500]}") + return {"raw_response": response, "error": f"Failed to parse JSON: {e}"} + + return self._retry_with_timeout(call_detect) + + def generate_jsonld(self, metadata: Dict, example_jsonld: str) -> str: + """Generate JSON-LD using OpenAI.""" + prompt = self._format_generation_prompt(metadata, example_jsonld) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 15000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + def call_generate(): + response = self._call_api(prompt, operation="JSON-LD generation") + return self._extract_json_from_response(response) + + return self._retry_with_timeout(call_generate) + + +class NRPClient(OpenAIClient): + """National Research Platform (NRP) LLM client - OpenAI-compatible.""" + + def __init__(self, api_key: str, model: str = "meta-llama/Llama-3.1-70B-Instruct"): + # NRP uses OpenAI-compatible API at ellm.nrp-nautilus.io + base_url = "https://ellm.nrp-nautilus.io/v1" + super().__init__(api_key=api_key, model=model, base_url=base_url) + print(f"Using NRP LLM endpoint: {base_url}") + print(f"Using model: {model}") + + +class AnthropicClient(AIClient): + """Anthropic (Claude) API client.""" + + def __init__(self, api_key: str, model: str = "claude-3-5-sonnet-20241022"): + self.client = anthropic.Anthropic(api_key=api_key) + self.model = model + + def _call_api(self, prompt: str, system_prompt: str = None, operation: str = "processing") -> str: + """Make API call to Anthropic with timeout enforcement.""" + print(f" Sending request to API for {operation} (this may take 1-6 minutes)...") + + def api_call(): + return self.client.messages.create( + model=self.model, + max_tokens=4096, + system=system_prompt or "You are a helpful assistant that generates structured data.", + messages=[{"role": "user", "content": prompt}], + timeout=API_TIMEOUT_SECONDS + ) + + response = self._call_api_with_timeout(api_call) + print(f" Received response") + if not response.content or not response.content[0].text: + raise ValueError("Empty response from API") + return response.content[0].text + + def detect_datasets(self, url: str, context: Dict, webpage_content: str = None) -> Dict: + """Detect datasets using Anthropic by analyzing webpage content. + + Args: + url: The webpage URL + context: Context dictionary from CSV + webpage_content: Optional pre-fetched HTML text content (if None, will fetch) + """ + # Fetch and extract content if not provided + if webpage_content is None: + print(" Fetching webpage content...") + html = fetch_webpage(url) + if html: + webpage_content = extract_text_content(html) + print(f" Extracted {len(webpage_content)} characters of text content") + else: + webpage_content = "" + print(" Warning: Could not fetch webpage content") + + prompt = self._format_detection_prompt(url, context, content=webpage_content) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 20000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + def call_detect(): + response = self._call_api(prompt, operation="dataset detection") + # Extract JSON from response (handles responses with extra text) + json_str = self._extract_json_from_response(response) + try: + parsed = json.loads(json_str) + # If the response is already a dict with 'datasets' key, return it + # Otherwise, wrap it in a dict with 'datasets' array + if isinstance(parsed, dict): + if 'datasets' not in parsed and ('name' in parsed or 'raw_response' in parsed): + # Old format: single dataset, wrap in array + parsed = {'datasets': [parsed]} + return parsed + elif isinstance(parsed, list): + # Response is already an array, wrap in dict + return {'datasets': parsed} + else: + return {"raw_response": response, "error": "Unexpected response format"} + except json.JSONDecodeError as e: + print(f" Debug: JSON parsing error: {e}") + print(f" Debug: Response preview: {response[:500]}") + return {"raw_response": response, "error": f"Failed to parse JSON: {e}"} + + return self._retry_with_timeout(call_detect) + + def generate_jsonld(self, metadata: Dict, example_jsonld: str) -> str: + """Generate JSON-LD using Anthropic.""" + prompt = self._format_generation_prompt(metadata, example_jsonld) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 20000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + def call_generate(): + response = self._call_api(prompt, operation="JSON-LD generation") + return self._extract_json_from_response(response) + + return self._retry_with_timeout(call_generate) + + +class GeminiClient(AIClient): + """Google Gemini API client with URL Context Tool support.""" + + def __init__(self, api_key: str, model: str = "gemini-2.0-flash"): + self.api_key = api_key + self.model_name = model.replace("models/", "") if model.startswith("models/") else model + + # Try to use new API with URL Context Tool support + if GEMINI_NEW_API: + self.client = new_genai.Client(api_key=api_key) + self.use_url_context = True + print(f"Using Google Gemini API (new package with URL Context Tool)") + else: + # Fallback to deprecated package + genai.configure(api_key=api_key) + self.model = genai.GenerativeModel(self.model_name) + self.use_url_context = False + print(f"Using Google Gemini API (deprecated package - URL Context Tool not available)") + + print(f"Using model: {self.model_name}") + + def _call_api(self, prompt: str, system_prompt: str = None, operation: str = "processing", url: str = None) -> str: + """Make API call to Gemini with timeout enforcement and quota error handling. + + If url is provided and using new API, will use URL Context Tool to fetch webpage content. + """ + print(f" Sending request to API for {operation} (this may take 1-6 minutes)...") + + # Combine system and user prompts if needed + full_prompt = prompt + if system_prompt: + full_prompt = f"{system_prompt}\n\n{prompt}" + + def api_call(): + if self.use_url_context and url: + # Use new API with URL Context Tool + from google.genai.types import GenerateContentConfig + url_context_tool = Tool(url_context=UrlContext()) + response = self.client.models.generate_content( + model=self.model_name, + contents=full_prompt, + config=GenerateContentConfig( + tools=[url_context_tool], + temperature=0.3, + max_output_tokens=4096, + ) + ) + # Extract text from response + if response.candidates and response.candidates[0].content.parts: + text_parts = [part.text for part in response.candidates[0].content.parts if hasattr(part, 'text')] + class Response: + def __init__(self, text): + self.text = text + return Response('\n'.join(text_parts)) + else: + raise ValueError("Empty response from API") + else: + # Use deprecated API (no URL Context Tool) + response = self.model.generate_content( + full_prompt, + generation_config={ + "temperature": 0.3, + "max_output_tokens": 4096, + } + ) + return response + + # Retry up to 3 times for quota errors + max_quota_retries = 3 + for quota_attempt in range(max_quota_retries): + try: + response = self._call_api_with_timeout(api_call) + print(f" Received response") + if not response or not response.text: + raise ValueError("Empty response from API") + return response.text + except Exception as e: + # Check if it's a quota error + is_quota_error = False + retry_delay = 30 # Default 30 seconds + + # Check for new API quota errors + if self.use_url_context and new_genai_errors: + if isinstance(e, new_genai_errors.ClientError): + error_str = str(e) + if '429' in error_str or 'RESOURCE_EXHAUSTED' in error_str or 'quota' in error_str.lower(): + is_quota_error = True + retry_match = re.search(r'retry in ([\d.]+)s', error_str, re.IGNORECASE) + if retry_match: + retry_delay = float(retry_match.group(1)) + retry_delay = min(retry_delay + 5, 60) + + # Check for deprecated API quota errors + if not is_quota_error and not self.use_url_context and google_exceptions: + if isinstance(e, google_exceptions.ResourceExhausted): + is_quota_error = True + error_str = str(e) + retry_match = re.search(r'retry in ([\d.]+)s', error_str, re.IGNORECASE) + if retry_match: + retry_delay = float(retry_match.group(1)) + retry_delay = min(retry_delay + 5, 60) + + if is_quota_error: + error_str = str(e) + # Extract retry delay from error message if available + retry_match = re.search(r'retry in ([\d.]+)s', error_str, re.IGNORECASE) + if retry_match: + retry_delay = float(retry_match.group(1)) + retry_delay = min(retry_delay + 5, 60) # Add 5s buffer, max 60s + else: + retry_delay = 30 # Default 30 seconds + + if quota_attempt < max_quota_retries - 1: + print(f" Quota limit reached. Waiting {retry_delay:.0f} seconds before retry ({quota_attempt + 1}/{max_quota_retries})...") + time.sleep(retry_delay) + continue + else: + print(f" Quota limit reached after {max_quota_retries} attempts.") + print(f" Please check your quota at: https://ai.dev/usage?tab=rate-limit") + raise Exception(f"Gemini API quota exceeded. Please wait and try again later, or check your quota limits.") + else: + # Not a quota error, re-raise + raise + + def detect_datasets(self, url: str, context: Dict) -> Dict: + """Detect datasets using Gemini by analyzing the URL directly. + + If using new API with URL Context Tool, Gemini will fetch and analyze the webpage. + Otherwise, it will analyze the URL string only. + """ + prompt = self._format_detection_prompt(url, context) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 10000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + if self.use_url_context: + print(f" Using URL Context Tool - Gemini will fetch and analyze: {url}") + + def call_detect(): + # Pass URL to _call_api so it can use URL Context Tool if available + response = self._call_api(prompt, operation="dataset detection", url=url) + response_text = response.text if hasattr(response, 'text') else str(response) + try: + return json.loads(response_text) + except json.JSONDecodeError: + return {"raw_response": response_text, "error": "Failed to parse JSON"} + + return self._retry_with_timeout(call_detect) + + def generate_jsonld(self, metadata: Dict, example_jsonld: str) -> str: + """Generate JSON-LD using Gemini.""" + prompt = self._format_generation_prompt(metadata, example_jsonld) + + # Debug: Log prompt size + prompt_size = len(prompt) + if prompt_size > 15000: + print(f" Warning: Large prompt size ({prompt_size} characters), this may cause timeouts") + + def call_generate(): + response = self._call_api(prompt, operation="JSON-LD generation") + return self._extract_json_from_response(response) + + return self._retry_with_timeout(call_generate) + + +def fetch_webpage(url: str) -> Optional[str]: + """Fetch webpage content.""" + try: + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' + } + response = requests.get(url, headers=headers, timeout=WEBPAGE_TIMEOUT) + response.raise_for_status() + return response.text + except Exception as e: + print(f"Error fetching {url}: {e}") + return None + + +def extract_text_content(html: str) -> str: + """Extract text content from HTML.""" + try: + soup = BeautifulSoup(html, 'html.parser') + # Remove script and style elements + for script in soup(["script", "style"]): + script.decompose() + return soup.get_text(separator=' ', strip=True) + except Exception as e: + print(f"Error parsing HTML: {e}") + return html[:HTML_FALLBACK_LIMIT] # Return first N chars if parsing fails + + +def extract_source_facts(html: str, base_url: str) -> Dict: + """Extract source-page facts that commonly prevent metadata drift. + + These facts are passed to the generation prompt and used for post-generation + warnings. The extraction is intentionally conservative and does not try to + infer values that are not visible in the source page markup/text. + """ + facts = { + "download_links": [], + "citation_text": [], + "variables": [], + } + if not html: + return facts + try: + from urllib.parse import urljoin + + soup = BeautifulSoup(html, 'html.parser') + for script in soup(["script", "style"]): + script.decompose() + + seen_links = set() + for a in soup.find_all("a", href=True): + label = a.get_text(" ", strip=True) + href = urljoin(base_url, a["href"]) + label_l = label.lower() + href_l = href.lower() + if "download" in label_l or "download" in href_l or "data" in label_l: + key = (label, href) + if href and key not in seen_links: + facts["download_links"].append({"label": label or "link", "href": href}) + seen_links.add(key) + + lines = [line.strip() for line in soup.get_text("\n", strip=True).splitlines() if line.strip()] + for i, line in enumerate(lines): + if line in ("Model Citation", "Data Citation") and i + 1 < len(lines): + facts["citation_text"].append({"label": line, "text": lines[i + 1]}) + + seen_variables = set() + for row in soup.find_all("tr"): + cells = [cell.get_text(" ", strip=True) for cell in row.find_all(["th", "td"])] + if len(cells) < 2: + continue + code = cells[0].strip() + name = cells[1].strip() + if not code or not name or code.lower() in {"name", "code", "property"}: + continue + if not re.fullmatch(r"[A-Za-z][A-Za-z0-9_-]*", code): + continue + unit = cells[2].strip() if len(cells) > 2 else "" + key = code.lower() + if key in seen_variables: + continue + facts["variables"].append({ + "name": name, + "alternateName": code, + "unitText": unit, + "description": name, + }) + seen_variables.add(key) + + for i, line in enumerate(lines): + code_match = re.match(r"^\(([^)]+)\)(.*)$", line) + if not code_match or i == 0: + continue + name = lines[i - 1] + code = code_match.group(1).strip() + rest = code_match.group(2).strip() + if not name or name in ("Name Unit Description", "Overview Variables"): + continue + unit = "" + description = rest + if rest: + parts = rest.split(None, 1) + if parts: + unit = parts[0] + description = parts[1] if len(parts) > 1 else "" + if code.lower() in seen_variables: + continue + facts["variables"].append({ + "name": name, + "alternateName": code, + "unitText": unit, + "description": description, + }) + seen_variables.add(code.lower()) + except Exception as e: + print(f"Warning: could not extract source-page facts from {base_url}: {e}") + return facts + + +def _looks_like_lumped_or_code_name(name: str) -> bool: + """Detect suspicious variable names that should be expanded or renamed.""" + if not name: + return False + if re.search(r"\b[A-Za-z]+\d+\s*[–-]\s*[A-Za-z]*\d+\b", name): + return True + if "/" in name: + return True + if re.fullmatch(r"[A-Za-z]+[A-Za-z0-9_-]*", name) and (name.islower() or any(ch.isdigit() for ch in name)): + return True + return False + + +def audit_generated_jsonld(data: Dict, source_facts: Dict) -> List[str]: + """Return warnings for metadata patterns that need manual review.""" + warnings = [] + if not isinstance(data, dict): + return ["Generated JSON-LD is not an object"] + + citation = data.get("citation") + if isinstance(citation, str): + warnings.append("citation is a string; expected an array of structured citation objects") + elif isinstance(citation, list) and any(isinstance(item, str) for item in citation): + warnings.append("citation array contains string entries; expected structured citation objects") + + variables = data.get("variableMeasured") + if isinstance(variables, str): + warnings.append("variableMeasured is a string; expected separate PropertyValue objects") + elif isinstance(variables, list): + source_codes = { + str(item.get("alternateName", "")).lower() + for item in (source_facts or {}).get("variables", []) + if isinstance(item, dict) and item.get("alternateName") + } + generated_codes = set() + for idx, item in enumerate(variables): + if not isinstance(item, dict): + continue + if item.get("alternateName"): + generated_codes.add(str(item.get("alternateName")).lower()) + if _looks_like_lumped_or_code_name(str(item.get("name", ""))): + warnings.append(f"variableMeasured[{idx}].name looks like a code or lumped range") + if "temporalCoverage" not in item: + warnings.append(f"variableMeasured[{idx}] is missing temporalCoverage") + if "spatialCoverage" not in item: + warnings.append(f"variableMeasured[{idx}] is missing spatialCoverage") + missing_codes = sorted(source_codes - generated_codes) + if missing_codes: + warnings.append(f"variableMeasured is missing source-listed variable code(s): {', '.join(missing_codes)}") + + download_links = { + link.get("href") for link in (source_facts or {}).get("download_links", []) + if isinstance(link, dict) and link.get("href") + } + if download_links: + dist = data.get("distribution") + content_urls = set() + if isinstance(dist, list): + content_urls = { + item.get("contentUrl") for item in dist + if isinstance(item, dict) and item.get("contentUrl") + } + if not (content_urls & download_links): + warnings.append("distribution does not include any exact source-page Download href") + return warnings + + +def load_example_jsonld() -> str: + """Load an example JSON-LD file for reference.""" + example_path = DATA_DIR / "gpp" / "2d78c4242a108f70ea2c0604964dc095b34bfd7b.jsonld" + if example_path.exists(): + with open(example_path, 'r', encoding='utf-8') as f: + return f.read() + return "" + + +def read_csv(csv_path: str) -> List[Dict]: + """Read the datasets CSV from a local file or from a URL (e.g. Google Sheets export).""" + parsed = urlparse(csv_path) + if parsed.scheme in ('http', 'https'): + try: + resp = requests.get(csv_path, timeout=30) + resp.raise_for_status() + text = resp.text + except Exception as e: + raise FileNotFoundError(f"Could not fetch CSV from URL: {e}") from e + f = io.StringIO(text) + reader = csv.DictReader(f) + datasets = list(reader) + return datasets + if not os.path.exists(csv_path): + raise FileNotFoundError(f"CSV file not found: {csv_path}") + datasets = [] + with open(csv_path, 'r', encoding='utf-8') as f: + reader = csv.DictReader(f) + for row in reader: + datasets.append(row) + return datasets + + +def save_jsonld(jsonld_str: str, output_dir: Path, dataset_name: str, url: str) -> Path: + """Save JSON-LD to file.""" + # Create safe filename from dataset name + safe_name = "".join(c for c in dataset_name if c.isalnum() or c in (' ', '-', '_')).rstrip() + safe_name = safe_name.replace(' ', '_')[:FILENAME_MAX_LENGTH] + + # Use URL hash as fallback (always include hash for uniqueness) + url_hash = hashlib.sha1(url.encode()).hexdigest()[:URL_HASH_LENGTH] + + # If safe_name is empty, use just the hash + if not safe_name: + filename = f"dataset_{url_hash}.jsonld" + else: + filename = f"{safe_name}_{url_hash}.jsonld" + output_path = output_dir / filename + + output_dir.mkdir(parents=True, exist_ok=True) + with open(output_path, 'w', encoding='utf-8') as f: + f.write(jsonld_str) + + return output_path + + +def main(): + parser = argparse.ArgumentParser(description='Generate JSON-LD for datasets') + parser.add_argument('--csv', default='datasets.csv', help='Path to CSV file or URL (e.g. Google Sheets export)') + parser.add_argument('--output-dir', default='data/objects/summoned/generated', help='Output directory for JSON-LD files') + parser.add_argument('--ai-service', choices=['openai', 'anthropic', 'nrp', 'gemini'], default='gemini', help='AI service to use (default: gemini)') + parser.add_argument('--api-key', help='API key (or set environment variable)') + parser.add_argument('--model', help='Model name (optional)') + parser.add_argument('--limit', type=int, help='Limit number of datasets to process') + parser.add_argument('--test-url', help='Test with a single URL instead of CSV') + parser.add_argument('--first-row', action='store_true', help='Process only the first row from CSV') + parser.add_argument('--next', dest='next_entry', action='store_true', help='Process only the next entry (one site that needs JSON-LD). Same as --first-row.') + parser.add_argument('--skip-existing', action='store_true', help='Skip sites that already have generated JSON-LD in the output folder') + parser.add_argument('--site-folder', action='store_true', default=True, help='Create folder per site and save each dataset as separate JSON-LD file') + + args = parser.parse_args() + + # Initialize AI client + env_var_name = f"{args.ai_service.upper()}_API_KEY" + api_key = args.api_key or os.getenv(env_var_name) or os.getenv("NRP_API_KEY") + + # Debug: Check if API key was loaded (but don't print the actual key) + if not api_key: + print(f"Error: API key required.") + print(f" Looking for: {env_var_name} or NRP_API_KEY") + # Check if .env file exists and has the variable + env_file = PROJECT_ROOT / '.env' + if env_file.exists(): + print(f" Found .env file at: {env_file}") + with open(env_file, 'r') as f: + content = f.read() + if env_var_name in content: + if f"{env_var_name}=your-" in content or f"{env_var_name}=your_" in content: + print(f" Warning: .env file contains placeholder value. Please replace 'your-{args.ai_service.lower()}-api-key-here' with your actual API key.") + else: + print(f" Note: {env_var_name} found in .env but not loaded. Check file format (no spaces around =).") + else: + print(f" Note: {env_var_name} not found in .env file.") + else: + print(f" .env file not found at: {env_file}") + print(f" Set {env_var_name} environment variable or use --api-key") + sys.exit(1) + + # Check if API key looks like a placeholder + if api_key.startswith('your-') or 'your-' in api_key.lower(): + print(f"Warning: API key appears to be a placeholder. Please set a real API key.") + sys.exit(1) + + if args.ai_service == 'openai': + if not OPENAI_AVAILABLE: + print("Error: openai package not installed. Run: pip install openai") + sys.exit(1) + client = OpenAIClient(api_key, args.model or "gpt-4o") + elif args.ai_service == 'nrp': + if not OPENAI_AVAILABLE: + print("Error: openai package not installed. Run: pip install openai") + sys.exit(1) + # Default NRP models: qwen3, llama3-sdsc, gpt-oss, etc. + # Available models: qwen3, llama3-sdsc, gpt-oss, gorilla, olmo, gemma3, kimi, etc. + client = NRPClient(api_key, args.model or "qwen3") + elif args.ai_service == 'anthropic': + if not ANTHROPIC_AVAILABLE: + print("Error: anthropic package not installed. Run: pip install anthropic") + sys.exit(1) + client = AnthropicClient(api_key, args.model or "claude-3-5-sonnet-20241022") + elif args.ai_service == 'gemini': + if not GEMINI_AVAILABLE: + print("Error: google-generativeai package not installed. Run: pip install google-generativeai") + sys.exit(1) + # Default Gemini models: gemini-2.0-flash (fast), gemini-2.5-flash, gemini-2.5-pro (more capable) + client = GeminiClient(api_key, args.model or "gemini-2.0-flash") + + output_dir = Path(args.output_dir) + example_jsonld = load_example_jsonld() + + # Test mode with single URL + if args.test_url: + print(f"Testing with URL: {args.test_url}") + if args.ai_service == 'gemini': + print(" Using Gemini with URL Context Tool (AI will browse/analyze the webpage directly)...") + else: + print(" Fetching webpage and extracting text content for AI analysis...") + context = { + CSV_FIELDS['NAME']: 'Test Dataset', + CSV_FIELDS['GROUP']: 'test', + CSV_FIELDS['DESCRIPTION']: '' + } + result = client.detect_datasets(args.test_url, context) + print("\n=== Detection Result ===") + print(json.dumps(result, indent=2)) + return + + # Process CSV + try: + datasets = read_csv(args.csv) + except FileNotFoundError as e: + print(f"Error: {e}") + sys.exit(1) + except Exception as e: + print(f"Error reading CSV file: {e}") + sys.exit(1) + + print(f"Found {len(datasets)} datasets in CSV") + + # Filter datasets that need JSON-LD + to_process = [ + d for d in datasets + if d.get(CSV_FIELDS['HAS_JSONLD'], '').upper() in ('FALSE', '#ERROR!', '') + and d.get(CSV_FIELDS['WEBPAGE_URL'], '').strip() + ] + + # Optionally skip sites that already have generated output + if getattr(args, 'skip_existing', False): + still_to_process = [] + for d in to_process: + name = d.get(CSV_FIELDS['NAME'], 'Unknown') + safe_folder = "".join(c for c in name if c.isalnum() or c in (' ', '-', '_')).rstrip().replace(' ', '_') + site_dir = output_dir / safe_folder + if site_dir.exists(): + existing = list(site_dir.glob("*.jsonld")) + if existing: + print(f"Skipping (already generated): {name}") + continue + still_to_process.append(d) + to_process = still_to_process + print(f"After skipping existing: {len(to_process)} site(s) to process") + + # Process only first row / next entry if requested + if getattr(args, 'next_entry', False) or args.first_row: + to_process = to_process[:1] if to_process else [] + print("Processing only the next entry (one site) from CSV") + elif args.limit: + to_process = to_process[:args.limit] + + print(f"Processing {len(to_process)} site(s) that need JSON-LD") + + timed_out_urls = [] + + for i, dataset in enumerate(to_process, 1): + url = dataset.get(CSV_FIELDS['WEBPAGE_URL'], '').strip() + name = dataset.get(CSV_FIELDS['NAME'], 'Unknown') + + if not url: + print(f"[{i}/{len(to_process)}] Skipping {name}: No URL") + continue + + print(f"\n[{i}/{len(to_process)}] Processing Site: {name}") + print(f" URL: {url}") + + # Create site folder if using folder structure + if args.site_folder: + # Create safe folder name from site name + safe_folder_name = "".join(c for c in name if c.isalnum() or c in (' ', '-', '_')).rstrip() + safe_folder_name = safe_folder_name.replace(' ', '_') + site_output_dir = output_dir / safe_folder_name + else: + site_output_dir = output_dir + + # Detect datasets + if args.ai_service == 'gemini': + print(" Using Gemini with URL Context Tool (AI will browse/analyze the webpage directly)...") + else: + print(" Fetching webpage and extracting text content for AI analysis...") + try: + detection_result = client.detect_datasets(url, dataset) + print(f" Detection complete") + except TimeoutError: + print(f" Error: Request timed out. Skipping this site.") + timed_out_urls.append({'name': name, 'url': url, 'reason': 'timeout'}) + continue + except Exception as e: + # Check if it's a server error + if any(code in str(e).lower() for code in SERVER_ERROR_CODES): + print(f" Error: API server error during detection. Skipping this site.") + print(f" Details: {e}") + timed_out_urls.append({'name': name, 'url': url, 'reason': 'server_error'}) + else: + print(f" Error during detection: {type(e).__name__}: {e}") + import traceback + print(f" Traceback: {traceback.format_exc()}") + timed_out_urls.append({'name': name, 'url': url, 'reason': 'detection_error'}) + continue + + # Extract datasets from detection result + # Handle both old format (single dataset) and new format (datasets array) + detected_datasets = [] + if isinstance(detection_result, dict): + if 'datasets' in detection_result and isinstance(detection_result['datasets'], list): + # New format: array of datasets + detected_datasets = detection_result['datasets'] + elif 'name' in detection_result or 'raw_response' in detection_result: + # Old format: single dataset or error + if 'raw_response' not in detection_result: + detected_datasets = [detection_result] + else: + print(f" Warning: Detection returned raw response, may need manual review") + detected_datasets = [detection_result] + else: + # Try to treat the whole result as a single dataset + detected_datasets = [detection_result] + elif isinstance(detection_result, list): + detected_datasets = detection_result + else: + print(f" Warning: Unexpected detection result format") + detected_datasets = [{'name': name, 'raw_response': str(detection_result)}] + + print(f" Found {len(detected_datasets)} dataset(s) on this webpage") + + # Process each detected dataset + for j, detected_dataset in enumerate(detected_datasets, 1): + dataset_name = detected_dataset.get('name', f'{name}_dataset_{j}') + dataset_url = detected_dataset.get('url', url) + + print(f"\n [{j}/{len(detected_datasets)}] Processing dataset: {dataset_name}") + + # Prepare metadata for this specific dataset + source_facts = {} + source_html = fetch_webpage(dataset_url) + if source_html: + source_facts = extract_source_facts(source_html, dataset_url) + if source_facts.get("download_links"): + print(f" Found {len(source_facts['download_links'])} source download link(s)") + if source_facts.get("citation_text"): + print(f" Found {len(source_facts['citation_text'])} source citation text item(s)") + if source_facts.get("variables"): + print(f" Found {len(source_facts['variables'])} source variable row(s)") + detected_extracted = dict(detected_dataset) + detected_extracted["source_facts"] = source_facts + metadata = { + 'name': dataset_name, + 'url': dataset_url, + 'description': detected_dataset.get('description', dataset.get(CSV_FIELDS['DESCRIPTION'], '')), + 'group': dataset.get(CSV_FIELDS['GROUP'], ''), + 'creator': detected_dataset.get('creator', dataset.get(CSV_FIELDS['CREATOR'], '')), + 'provider': dataset.get(CSV_FIELDS['PROVIDER'], ''), + 'publisher': detected_dataset.get('publisher', dataset.get(CSV_FIELDS['PUBLISHER'], '')), + 'keywords': detected_dataset.get('keywords', dataset.get(CSV_FIELDS['KEYWORDS'], '')), + 'spatial_coverage': ( + detected_dataset.get('spatialCoverage', {}) if 'spatialCoverage' in detected_dataset + else ( + f"{dataset.get(CSV_FIELDS['BOX_LON_MIN'], '')},{dataset.get(CSV_FIELDS['BOX_LAT_MIN'], '')} " + f"{dataset.get(CSV_FIELDS['BOX_LON_MAX'], '')},{dataset.get(CSV_FIELDS['BOX_LAT_MAX'], '')}" + if dataset.get(CSV_FIELDS['BOX_LON_MIN']) else '' + ) + ), + 'extracted': detected_extracted + } + + # Generate JSON-LD + print(f" Generating JSON-LD...") + try: + jsonld = client.generate_jsonld(metadata, example_jsonld) + + # Validate JSON + try: + parsed_jsonld = json.loads(jsonld) + print(f" Valid JSON") + for warning in audit_generated_jsonld(parsed_jsonld, source_facts): + print(f" Review warning: {warning}") + except json.JSONDecodeError as e: + print(f" Warning: Generated JSON may be invalid: {e}") + + # Save + output_path = save_jsonld(jsonld, site_output_dir, dataset_name, dataset_url) + print(f" Saved to: {output_path}") + except TimeoutError: + print(f" Error: Request timed out. Skipping this dataset.") + timed_out_urls.append({'name': dataset_name, 'url': dataset_url, 'reason': 'timeout'}) + continue + except Exception as e: + # Check if it's a server error + if any(code in str(e).lower() for code in SERVER_ERROR_CODES): + print(f" Error: API server error. Skipping this dataset.") + print(f" Details: {e}") + timed_out_urls.append({'name': dataset_name, 'url': dataset_url, 'reason': 'server_error'}) + else: + print(f" Error: {e}. Skipping this dataset.") + timed_out_urls.append({'name': dataset_name, 'url': dataset_url, 'reason': 'other_error'}) + continue + + # Print summary of failed URLs + if timed_out_urls: + print(f"\n{'='*60}") + print(f"Summary: {len(timed_out_urls)} dataset(s) failed:") + print(f"{'='*60}") + # Group by reason + by_reason = {} + for item in timed_out_urls: + reason = item.get('reason', 'unknown') + if reason not in by_reason: + by_reason[reason] = [] + by_reason[reason].append(item) + + for reason, items in by_reason.items(): + reason_name = reason.replace('_', ' ').title() + print(f"\n{reason_name} ({len(items)}):") + for item in items: + print(f" - {item['name']}: {item['url']}") + print(f"{'='*60}") + else: + print(f"\n{'='*60}") + print("All datasets processed successfully!") + print(f"{'='*60}") + + +if __name__ == '__main__': + main() diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 0000000..f9f88a8 --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1,20 @@ +# Requirements for JSON-LD generation script +# Install with: pip install -r requirements.txt + +# AI API clients (install at least one) +openai>=1.0.0 +anthropic>=0.18.0 +google-genai>=0.2.0 # New package with URL Context Tool support +google-generativeai>=0.3.0 # Deprecated, but kept for backward compatibility + +# Web scraping and parsing +requests>=2.31.0 +beautifulsoup4>=4.12.0 + +# Environment variable management +python-dotenv>=1.0.0 + +# Optional: for better HTML parsing +lxml>=4.9.0 + + diff --git a/scripts/validate_jsonld_batch.py b/scripts/validate_jsonld_batch.py new file mode 100644 index 0000000..2768c0e --- /dev/null +++ b/scripts/validate_jsonld_batch.py @@ -0,0 +1,182 @@ +#!/usr/bin/env python3 +""" +Validate JSON-LD files under a directory (e.g. data/objects/summoned/generated). +Checks: valid JSON, @context, @type, name; spatialCoverage box format; distribution encodingFormat as array. +WebPage and DataCatalog are accepted with a warning (expected Dataset for dataset files). +Exits 0 if all pass, 1 if any file fails. +""" +import json +import sys +from pathlib import Path + + +def get_box_string(data): + """Extract spatialCoverage box string if present.""" + sc = data.get("spatialCoverage") + if not isinstance(sc, dict): + return None + geo = sc.get("geo") + if not isinstance(geo, dict): + return None + box = geo.get("box") + if isinstance(box, str): + return box.strip() + return None + + +def validate_box(box_str): + """Validate Schema.org box format: 'west,south east,north'. Returns (True, None) or (False, error_msg).""" + if not box_str: + return True, None + parts = box_str.split() + if len(parts) == 2: + try: + ws = parts[0].split(",") + en = parts[1].split(",") + if len(ws) == 2 and len(en) == 2: + west, south = float(ws[0]), float(ws[1]) + east, north = float(en[0]), float(en[1]) + if -90 <= south <= 90 and -90 <= north <= 90 and -180 <= west <= 180 and -180 <= east <= 180: + return True, None + return False, "box out of range" + except ValueError: + return False, "invalid box format" + elif len(parts) == 4: + try: + a, b, c, d = float(parts[0]), float(parts[1]), float(parts[2]), float(parts[3]) + if -90 <= b <= 90 and -90 <= d <= 90: + west, south, east, north = a, b, c, d + else: + south, west, north, east = a, b, c, d + if -90 <= south <= 90 and -90 <= north <= 90 and -180 <= west <= 180 and -180 <= east <= 180: + return True, None + return False, "box out of range" + except ValueError: + return False, "invalid box numbers" + return False, "box expected 2 or 4 numbers" + + +def check_distribution_encoding_format(data): + """Check that each distribution has encodingFormat as array. Returns list of error strings (empty if ok).""" + errs = [] + dist = data.get("distribution") + if not isinstance(dist, list): + return errs + for i, item in enumerate(dist): + if not isinstance(item, dict): + continue + ef = item.get("encodingFormat") + if ef is None: + continue + if isinstance(ef, str): + errs.append(f"distribution[{i}].encodingFormat must be array, got string") + elif not isinstance(ef, list): + errs.append(f"distribution[{i}].encodingFormat must be array, got {type(ef).__name__}") + return errs + + +def validate_file(path: Path) -> tuple[bool, list]: + """ + Validate one JSON-LD file. Returns (success: bool, list of warning/error messages). + success=False means hard failure (invalid JSON or missing required fields). + """ + errors = [] + warnings = [] + try: + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + except json.JSONDecodeError as e: + return False, [f"JSON Syntax Error: Invalid JSON: {e}"] + except Exception as e: + return False, [str(e)] + + # Required keys + for key in ["@context", "@type", "name"]: + if key not in data: + errors.append(f"missing '{key}'") + if errors: + return False, errors + + # @type: Dataset expected; WebPage and DataCatalog allowed with warning + dtype = data.get("@type", "") + if dtype not in ("Dataset", "DataCatalog", "WebPage"): + if dtype: + warnings.append(f"@type is '{dtype}', expected 'Dataset'") + elif dtype in ("WebPage", "DataCatalog"): + warnings.append(f"@type is '{dtype}', expected 'Dataset'") + + # spatialCoverage box + box_str = get_box_string(data) + if box_str: + ok, msg = validate_box(box_str) + if not ok: + errors.append(f"spatialCoverage box: {msg}") + + # distribution encodingFormat must be array + ef_errs = check_distribution_encoding_format(data) + errors.extend(ef_errs) + + all_msgs = errors + warnings + return len(errors) == 0, all_msgs + + +def main(): + if len(sys.argv) < 2: + print("Usage: python validate_jsonld_batch.py ", file=sys.stderr) + sys.exit(2) + root = Path(sys.argv[1]) + if not root.is_dir(): + print(f"Error: not a directory: {root}", file=sys.stderr) + sys.exit(2) + + files = sorted(root.rglob("*.jsonld")) + print(f"Found {len(files)} JSON-LD file(s) to validate") + print("=" * 60) + + failed = [] + for path in files: + rel = path.as_posix() + print(f"\nValidating: {rel}") + print("=" * 60) + success, messages = validate_file(path) + if not success: + for m in messages: + print(f"Error: {m}") + failed.append(rel) + continue + print("[OK] Valid JSON syntax") + if messages: + print("Warning: Warnings:") + for m in messages: + print(f" - {m}") + print("[PASSED] Validation passed with warning(s)") + else: + print("[SUCCESS] All validations passed!") + # Summary + try: + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + name = data.get("name", "") + if len(name) > 50: + name = name[:47] + "..." + print("Summary:") + print(f" - Type: {data.get('@type', '')}") + print(f" - Name: {name}...") + box_str = get_box_string(data) + if box_str: + print(f" - Bounding Box: {box_str}") + dist = data.get("distribution") + if isinstance(dist, list): + print(f" - Distribution entries: {len(dist)}") + except Exception: + pass + print("\n" + "=" * 60) + if failed: + print("Some files failed validation") + sys.exit(1) + print("All validations passed.") + sys.exit(0) + + +if __name__ == "__main__": + main()