{
  "service": {
    "id": "rakennekehitysennuste",
    "metadataVersion": "1.0",
    "name": {
      "fi": "Maatalouden rakennekehitysennuste",
      "sv": "Prognos av strukturutveckling",
      "en": "Forecast of Structural Development"
    },
    "metadataFramework": {
      "name": "EconomyDoctors Semantic Discovery Framework",
      "author": "Jussi Iltanen",
      "organization": "Luke",
      "year": 2026
    },    
	"description": {
  		"fi": "Maatalouden toteutuneen rakennekehityksen ja tulevan rakennekehitysennusteen tilastotaulukkopalvelu AI-agenteille",
  		"sv": "Statistisk tabelltjänst för AI-agenter med realiserad och prognostiserad strukturutveckling inom jordbruket",
  		"en": "Statistical table service for AI agents providing realized and forecast structural development of agriculture"
	},
"dataPolicy": {
  "realizedDataOnly": false,
  "containsForecasts": true,
  "fi": "Rajapinta sisältää sekä toteutuneita tietoja että maatalouden rakennekehitysennusteita. E-merkinnällä varustetut vuodet ovat ennustevuosia.",
  "en": "This interface contains both realized data and agricultural structural development forecasts. Years marked with E are forecast years.",
  "agentInstructions": [
    "Erota toteutuneet vuodet ja ennustevuodet toisistaan.",
    "E-merkinnällä varustetut vuodet ovat ennusteita.",
    "Älä esitä ennustevuosien tietoja toteutuneina havaintoina.",
    "Kun käyttäjä kysyy tulevasta rakennekehityksestä, käytä ennustevuosia.",
    "Kun vastauksessa yhdistetään toteutuneita ja ennustettuja vuosia, ilmaise selvästi missä kohdassa toteutunut tieto vaihtuu ennusteeksi."
    ]
},    
    "queryModel": "dimension-based",
    "generated": "2026-11-09T12:45:27Z"
  },

  "endpoints": {
    "query": {
      "url": {
        "fi": "https://taloustohtori.luke.fi/maatalouden-rakennekehitysennuste/omat-valinnat/",
        "sv": "https://taloustohtori.luke.fi/sv/prognos-av-strukturutveckling/egna-val/",
        "en": "https://taloustohtori.luke.fi/en/forecast-of-structural-development/own-criteria/"
      },
      "methods": [
        "GET"
      ]
    }
  },

  "queryStructure": {
    "type": "flexible-dimension-order",

"languageSelection": {
  "type": "endpoint-based",
  "supportedLanguages": [
    "fi",
    "sv",
    "en"
  ]
},
    
    "unusedDimensionValue": 0,
	
    "dimensionParameters": [
      {
        "main": "dim1paataso",
        "mainType": "integer",
        "sub": "dim1alataso",
        "subType": "string"
      },
      {
        "main": "dim2paataso",
        "mainType": "integer",
        "sub": "dim2alataso",
        "subType": "string"
      },
      {
        "main": "dim3paataso",
        "mainType": "integer",
        "sub": "dim3alataso",
        "subType": "string"
      },
      {
        "main": "dim4paataso",
        "mainType": "integer",
        "sub": "dim4alataso",
        "subType": "string"
      },
      {
        "main": "dim5paataso",
        "mainType": "integer",
        "sub": "dim5alataso",
        "subType": "string"
      },
      {
        "main": "dim6paataso",
        "mainType": "integer",
        "sub": "dim6alataso",
        "subType": "string"
      }                       
    ],

    "rules": {
      "fi": [
    	"Raportti on valittava",
    	"Vähintään kaksi dimensiota on valittava",
    	"Vuosi-dimension on aina oltava yksi valituista dimensioista",      
        "Dimensioiden järjestys on joustava",
        "Mikä tahansa dimensio voi esiintyä missä tahansa kyselypositiossa",
        "AI-agenttien tulee kartoittaa dimensio-ID:t dynaamisesti"
      ],
      "sv": [
    	"En rapport måste väljas",
    	"Minst två dimensioner måste väljas",
    	"Årsdimensionen måste alltid vara en av de valda dimensionerna",      
        "Dimensionernas ordning är flexibel",
        "Vilken dimension som helst kan förekomma i vilken frågeposition som helst",
        "AI-agenter ska mappa dimensions-ID dynamiskt"
      ],
      "en": [
    	"A report must be selected",
    	"At least two dimensions must be selected",
    	"The year dimension must always be one of the selected dimensions",      
        "Dimension order is flexible",
        "Any dimension may appear in any query position",
        "AI agents should map dimension IDs dynamically"
      ]
    }
  },

  "dimensionValueEncoding": {
    "type": "comma-separated-string",
    
    "description": {
      "fi": "dimNalataso sisältää yhden tai useamman pilkuilla erotetun arvo-ID:n",
      "sv": "dimNalataso innehåller ett eller flera värde-ID:n separerade med kommatecken",
      "en": "dimNalataso contains one or more value IDs separated by commas"
      },
      
    "examples": [
      "27",
      "1,2",
      "1,2,3,4"
      ]
    },

  "queryRules": {
    "dimensionSelection": {
    	"minimumSelected": 2,
    	"maximumSelected": 6,
    	"requiredDimensionIds": [1]
  		},  
    "requiredDimensions": [
      {
        "dimensionId": 1,
        "name": {
          "fi": "Vuosi",
          "sv": "År",
          "en": "Year"
        }
      }
    ],

    "rules": {
      "fi": [
      	"Raportti on valittava",
      	"Vähintään kaksi dimensiota on valittava",
      	"Vuosi-dimension on aina oltava yksi valituista dimensioista",
      	"Dimensioiden järjestys on joustava",
      	"Dimensiovalinnat validoidaan palvelinpuolella"
      ],
      "sv": [
      	"En rapport måste väljas",
      	"Minst två dimensioner måste väljas",
      	"Årsdimensionen måste alltid vara en av de valda dimensionerna",
      	"Dimensionernas ordning är flexibel",
      	"Dimensionsval valideras på serversidan"
      ],
      "en": [
      	"A report must be selected",
      	"At least two dimensions must be selected",
      	"The year dimension must always be one of the selected dimensions",
      	"Dimension order is flexible",
      	"Dimension selections are validated server-side"
      ]
    }
  },

  "response": {
    "contentType": "text/html",
    "primaryDataFormat": "html-table",
    "format": "html",
    "structure": "statistical-table",
    "resultLimits": { "maxColumns": 400, "enforcement": "server-side" },    
    "description": {
      "fi": "HTML-sivu joka sisältää tilastotaulukon ja siihen liittyvät metatiedot",
      "sv": "HTML-sida som innehåller en statistisk tabell och tillhörande metadata",
      "en": "HTML page containing a statistical table and related metadata"
      }    
    },   

  "queryParameters": {
    "tulostus": {
      "type": "integer",
      "semanticRole": "report-type",
      "fixedSelection": true,
      "required": true,

	"allowedValues": [{ 
		"id": 21, 
		"label": { "fi": "Tilamäärä", "sv": "Antal gårdar", "en": "Number of farms"},
		"description": "Realized and forecast development of the number of agricultural and horticultural farms. The report provides farm counts that can be classified by selected dimensions such as year, production type, region and economic size.", 
		"tags": [ "number of farms","farm count","agricultural farms","horticultural farms","farm structure","structural development","structural development forecast","farm number forecast","forecast" ] }]
    },

    "nayta": {
      "type": "string",
      "required": true,
      "allowedValues": [
        "laheta"
      ]
    }
  },

  "dimensions": [
    {
	"id": 1, "name": {
		"fi": "Vuosi", 
		"sv": "År", 
		"en": "Accounting year" }, 
		
		"note": {
		"fi": "Sisältää toteutuneet vuodet ja ennustevuodet. E-merkintä tarkoittaa ennustetta.",
		"sv": "Innehåller realiserade år och prognosår. E markerar en prognos.",
		"en": "Contains realized years and forecast years. E indicates a forecast." }, 
		"values": [{
		  "id": 33, "label": "2030E" },{
		  "id": 32, "label": "2029E" },{
		  "id": 31, "label": "2028E" },{
		  "id": 30, "label": "2027E" },{
		  "id": 29, "label": "2026E" },{
		  "id": 28, "label": "2025" },{
		  "id": 27, "label": "2024" },{
		  "id": 26, "label": "2023" },{
		  "id": 25, "label": "2022" },{
		  "id": 24, "label": "2021" },{
		  "id": 23, "label": "2020" },{
		  "id": 22, "label": "2019" },{
		  "id": 21, "label": "2018" },{
		  "id": 20, "label": "2017" },{
		  "id": 19, "label": "2016" },{
		  "id": 18, "label": "2015" },{
		  "id": 17, "label": "2014" },{
		  "id": 16, "label": "2013" },{
		  "id": 15, "label": "2012" },{
		  "id": 14, "label": "2011" },{
		  "id": 13, "label": "2010" },{
		  "id": 12, "label": "2009" },{
		  "id": 11, "label": "2008" },{
		  "id": 10, "label": "2007" },{
		  "id": 9, "label": "2006" },{
		  "id": 8, "label": "2005" },{
		  "id": 7, "label": "2004" },{
		  "id": 6, "label": "2003" },{
		  "id": 5, "label": "2002" },{
		  "id": 4, "label": "2001" },{
		  "id": 3, "label": "2000" }]
    },    
    {
    "id": 2, "name": {
		"fi": "Tukialue", 
		"sv": "Stödområde", 
		"en": "Subsidy Region" }, 
		
		"values": [{
		  "id": 1, "label":  { "fi": "A", "sv": "A", "en": "Subsidy Region A"} },{
		  "id": 2, "label":  { "fi": "B", "sv": "B", "en": "Subsidy Region B"} },{
		  "id": 3, "label":  { "fi": "C1", "sv": "C1", "en": "Subsidy Region C1"} },{
		  "id": 4, "label":  { "fi": "C2", "sv": "C2", "en": "Subsidy Region C2"} },{
		  "id": 5, "label":  { "fi": "C2p", "sv": "C2p", "en": "Subsidy Region C2p"} },{
		  "id": 6, "label":  { "fi": "C3", "sv": "C3", "en": "Subsidy Region C3"} },{
		  "id": 7, "label":  { "fi": "C4", "sv": "C4", "en": "Subsidy Region C4"} }]
    },
    {
    "id": 13, "name": {
		"fi": "Maakunta", 
		"sv": "Landskap", 
		"en": "Province" }, 
		
		"values": [{
		  "id": 1, "label":  { "fi": "Uusimaa", "sv": "Nyland", "en": "Uusimaa"} },{
		  "id": 2, "label":  { "fi": "Varsinais-Suomi", "sv": "Egentliga Finland", "en": "Varsinais-Suomi"} },{
		  "id": 4, "label":  { "fi": "Satakunta", "sv": "Satakunda", "en": "Satakunta"} },{
		  "id": 5, "label":  { "fi": "Kanta-Häme", "sv": "Tavastland", "en": "Kanta-Häme"} },{
		  "id": 6, "label":  { "fi": "Pirkanmaa", "sv": "Birkaland", "en": "Pirkanmaa"} },{
		  "id": 7, "label":  { "fi": "Päijät-Häme", "sv": "Päijänne-Tavastland", "en": "Päijät-Häme"} },{
		  "id": 8, "label":  { "fi": "Kymenlaakso", "sv": "Kymmenedalen", "en": "Kymenlaakso"} },{
		  "id": 9, "label":  { "fi": "Etelä-Karjala", "sv": "Södra Karelen", "en": "Etelä-Karjala"} },{
		  "id": 10, "label":  { "fi": "Etelä-Savo", "sv": "Södra Savolax", "en": "Etelä-Savo"} },{
		  "id": 11, "label":  { "fi": "Pohjois-Savo", "sv": "Norra Savolax", "en": "Pohjois-Savo"} },{
		  "id": 12, "label":  { "fi": "Pohjois-Karjala", "sv": "Norra Karelen", "en": "Pohjois-Karjala"} },{
		  "id": 13, "label":  { "fi": "Keski-Suomi", "sv": "Mellersta Finland", "en": "Keski-Suomi"} },{
		  "id": 14, "label":  { "fi": "Etelä-Pohjanmaa", "sv": "Södra Österbotten", "en": "Etelä-Pohjanmaa"} },{
		  "id": 15, "label":  { "fi": "Pohjanmaa", "sv": "Österbotten", "en": "Pohjanmaa"} },{
		  "id": 16, "label":  { "fi": "Keski-Pohjanmaa", "sv": "Mellersta Österbotten", "en": "Keski-Pohjanmaa"} },{
		  "id": 17, "label":  { "fi": "Pohjois-Pohjanmaa", "sv": "Norra Österbotten", "en": "Pohjois-Pohjanmaa"} },{
		  "id": 18, "label":  { "fi": "Kainuu", "sv": "Kajanaland", "en": "Kainuu"} },{
		  "id": 19, "label":  { "fi": "Lappi", "sv": "Lapland", "en": "Lappi"} },{
		  "id": 20, "label":  { "fi": "Itä-Uusimaa", "sv": "Östra Nyland", "en": "Itä-Uusimaa"} },{
		  "id": 21, "label":  { "fi": "Ahvenanmaa", "sv": "Åland", "en": "Ahvenanmaa"} }]
    },    
    {
	"id": 39, "name": {
		"fi": "Tuotantosuunta", 
		"sv": "Produktionsinriktning", 
		"en": "Production type" }, 
		
		"values": [{
		  "id": 1, "label": { "fi": "Viljatilat", "sv": "Spannmålsgårdar", "en": "Cereal Farms"} },{
		  "id": 2, "label": { "fi": "Muut kasvinviljelytilat", "sv": "Övriga växtodlingsgårdar", "en": "Other Crop Farms"} },{
		  "id": 3, "label": { "fi": "Kasvihuoneyritykset", "sv": "Växthusföretag", "en": "Horticulture indoor"} },{
		  "id": 4, "label": { "fi": "Avomaapuutarhatilat", "sv": "Gårdar med frilandsodling av trädgårdsväxter", "en": "Horticulture outdoor"} },{
		  "id": 5, "label": { "fi": "Lypsykarjatilat", "sv": "Mjölkgårdar", "en": "Dairy Farms"} },{
		  "id": 6, "label": { "fi": "Muut nautakarjatilat", "sv": "Övriga nötboskapsgårdar", "en": "Cattle Farms"} },{
		  "id": 7, "label": { "fi": "Lammas ja vuohitilat", "sv": "Får- och getgårdar", "en": "Sheep goats and other grazing livestock"} },{
		  "id": 8, "label": { "fi": "Sikatilat", "sv": "Svingårdar", "en": "Pig farms"} },{
		  "id": 9, "label": { "fi": "Siipikarjatilat", "sv": "Fjäderfägårdar", "en": "Poultry farms"} },{
		  "id": 10, "label": { "fi": "Sekatilat", "sv": "Gårdar med blandad produktion", "en": "Mixed production"} },{
		  "id": 11, "label": { "fi": "Luokittelemattomat", "sv": "Oklassificerade", "en": "Non classified"} }]
    },
    {
	"id": 40, "name": {
		"fi": "Taloudellinen koko", 
		"sv": "Ekonomisk storlek", 
		"en": "Economic size" }, 
		
		"values": [{
		  "id": 5, "label": "15 000 - 25 000" },{
		  "id": 6, "label": "25 000 - 50 000" },{
		  "id": 7, "label": "50 000 - 100 000" },{
		  "id": 8, "label": "100 000 - 250 000" },{
		  "id": 9, "label": "250 000 - 500 000" },{
		  "id": 10, "label": "500 000 - 750 000" },{
		  "id": 11, "label": "750 000 - 1 000 000" },{
		  "id": 12, "label": "1 000 000 - 1 500 000" },{
		  "id": 13, "label": "1 500 000 - 3 000 000" },{
		  "id": 14, "label": "> 3 000 000" }]
    }    
  ],

  "examples": [
    {
	"description": {
	"fi": "Kuinka monta viljatilaa ennustetaan olevan vuonna 2030?",
	"sv": "Hur många spannmålsgårdar prognostiseras det finnas år 2030?",
	"en": "How many cereal farms are forecast to exist in 2030?"
	},

      "request": {
        "method": "GET",

        "url": {
          "fi": "https://taloustohtori.luke.fi/maatalouden-rakennekehitysennuste/omat-valinnat/?tulostus=21&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=33&dim3paataso=0&dim3alataso=0&dim4paataso=0&dim4alataso=0&dim5paataso=0&dim5alataso=0&dim6paataso=0&dim6alataso=0",

          "sv": "https://taloustohtori.luke.fi/sv/prognos-av-strukturutveckling/egna-val/?tulostus=21&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=33&dim3paataso=0&dim3alataso=0&dim4paataso=0&dim4alataso=0&dim5paataso=0&dim5alataso=0&dim6paataso=0&dim6alataso=0",

          "en": "https://taloustohtori.luke.fi/en/forecast-of-structural-development/own-criteria/?tulostus=21&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=33&dim3paataso=0&dim3alataso=0&dim4paataso=0&dim4alataso=0&dim5paataso=0&dim5alataso=0&dim6paataso=0&dim6alataso=0"
        }
      }
    }
  ],
  
  "dimensionCoverage": {
    "fi": "Tämä metadata voi sisältää vain osajoukon palvelun käytettävissä olevista dimensioista.",
    "sv": "Denna metadata kan innehålla endast en delmängd av tillgängliga dimensioner.",
    "en": "This metadata may contain only a subset of the dimensions available in the service."
    },
    
  "agentGuidance": {
"fi": [
  "Käytä vain dokumentoituja parametreja",
  "GET on suositeltava indeksointiin",
  "Tulokset generoidaan reaaliajassa",
  "Dimensioiden arvot voivat muuttua automaattisesti Oracle-tietokannan mukaan",
  "AI-agentit voivat muodostaa omia aikasarjojaan valitsemalla yhden tai useamman vuoden.",
  "E-merkinnällä varustettuja vuosia tulee käsitellä ennusteina eikä toteutuneina havaintoina.",
  "Taulukon leveys kasvaa valittujen dimensioarvojen yhdistelmien mukaan. AI-agenttien tulee välttää tarpeettoman laajoja valintajoukkoja.",
  "Kaikkia dimensioita ei voi yhdistää vapaasti.",
  "Alueelliset luokitukset perustuvat kuntiin.",
  "Maakunta-, tukialue- ja muut aluejaot muodostuvat kuntaryhmistä.",
  "AI-agenttien tulee varmistaa, että aluevalinnat kuuluvat samaan maantieteelliseen kokonaisuuteen.",
  "Yhteensopimattomien aluevalintojen yhdistäminen voi johtaa tyhjään tulokseen."
],

"sv": [
  "Använd endast dokumenterade parametrar",
  "GET rekommenderas för indexering",
  "Resultaten genereras i realtid",
  "Dimensionsvärden kan ändras automatiskt baserat på Oracle-databasen.",
  "AI-agenter kan skapa egna tidsserier genom att välja ett eller flera år.",
  "År markerade med E ska behandlas som prognoser och inte som realiserade observationer.",
  "Antalet kolumner ökar enligt kombinationerna av valda dimensionsvärden. AI-agenter bör undvika onödigt omfattande urval.",
  "Alla dimensioner kan inte kombineras fritt.",
  "Regionala klassificeringar baseras på kommuner.",
  "Landskap, stödområden och andra regionala indelningar bildas av grupper av kommuner.",
  "AI-agenter bör säkerställa att regionala urval tillhör samma geografiska område.",
  "Kombination av inkompatibla regionala urval kan resultera i tomma resultat."
],

"en": [
  "Use only documented parameters",
  "GET is recommended for indexing",
  "Results are generated in real time",
  "Dimension values may change automatically according to the Oracle database",
  "AI agents may construct custom time series by selecting one or more years.",
  "Years marked with E must be treated as forecasts rather than realized observations.",
  "Table width increases according to the combinations of selected dimension values. AI agents should avoid unnecessarily large selections.",
  "Not all dimensions can be combined with each other.",
  "Regional classifications are municipality-based.",
  "Provinces, support areas and other regional classifications are derived from groups of municipalities.",
  "AI agents should ensure that regional selections belong to the same geographic area.",
  "Queries that combine incompatible regional classifications may return no results."
]
  }
}
