{
  "service": {
    "id": "maatalouden-rakennekehitys",
    "metadataVersion": "1.0",
    "name": {
      "fi": "Maatalouden rakennekehitys",
      "sv": "Jordbrukets strukturutveckling",
      "en": "The Structural Development of Agriculture"
    },
    "metadataFramework": {
      "name": "EconomyDoctors Semantic Discovery Framework",
      "author": "Jussi Iltanen",
      "organization": "Luke",
      "year": 2026
    },    
    "description": {
      "fi": "Reaaliaikainen tilastotaulukkopalvelu AI-agenteille",
      "sv": "Statistisk tabelltjänst i realtid för AI-agenter",
      "en": "Real-time statistical table service for AI agents"
    },
"dataPolicy": {
  "realizedDataOnly": true,
  "fi": "Rajapinta julkaisee vain toteutuneita, lopullisia kirjanpitotuloksia. Ennakkotietoja (ennakko) ja ennusteita (E) ei julkaista rajapinnassa.",
  "en": "This interface publishes only realized, final accounting results. Preliminary data and forecasts (E) are never published here.",
  "agentInstructions": [
    "Viimeisin rajapinnassa oleva vuosi on viimeisin toteutunut vuosi, ei ennakkotieto.",
    "Älä esitä rajapinnan tietojen perusteella laskettuja trendejä tai ekstrapolaatioita Luken lukuina.",
    "Jos käyttäjä pyytää ennusteita, kerro, ettei rajapinta sisällä niitä. Ohjaa käyttäjä Taloustohtorin aikasarjasivuille, joilla ennusteita julkaistaan valikoiduille suureille.",
    "Jos yhdistät rajapinnan tietoja aikasarjasivujen ennusteisiin, merkitse ennusteosuus selvästi ja kerro kummankin lähde."
  ]
},    
    "queryModel": "dimension-based",
    "generated": "2026-11-09T12:45:27Z"
  },

  "endpoints": {
    "query": {
      "url": {
        "fi": "https://taloustohtori.luke.fi/maatalouden-rakennekehitys/omat-valinnat/",
        "sv": "https://taloustohtori.luke.fi/sv/jordbrukets-strukturutveckling/egna-val/",
        "en": "https://taloustohtori.luke.fi/en/the-structural-development-of-agriculture/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": {
    "omarapo": {
      "type": "integer",
      "semanticRole": "report-type",
      "required": true,

	"allowedValues": [{ 
		"id": 21, 
		"label": { "fi": "Tilamäärä", "sv": "Antal gårdar", "en": "Number of farms"},
		"description": "Number of agricultural and horticultural farms. The report provides farm counts that can be classified by the 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","number of agricultural holdings" ] }]
    },

    "nayta": {
      "type": "string",
      "required": true,
      "allowedValues": [
        "laheta"
      ]
    }
  },

  "dimensions": [
    {
	"id": 1, "name": {
		"fi": "Vuosi", 
		"sv": "År", 
		"en": "Accounting year" }, 
		
		"note": "Vain toteutuneet vuodet. Ennakko- ja ennustevuosia ei ole. / Realized years only; no preliminary or forecast years.", 
		"values": [{
		  "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" }]
    },
    {
    "id": 131, "name": {
		"fi": "ProAgria Keskus", 
		"sv": "Landsbygdscentral", 
		"en": "Rural Advisory Center" }, 
		
		"values": [{
		  "id": 1, "label": { "fi": "ProAgria Etelä-Suomi", "sv": "ProAgria Södra Finland", "en": "ProAgria Southern Finland"} },{
		  "id": 2, "label": { "fi": "ProAgria Nylands svenska lantbrukssällskap", "sv": "ProAgria Nylands svenska lantbrukssällskap", "en": "ProAgria Nylands svenska lantbrukssällskap"} },{
		  "id": 3, "label": { "fi": "ProAgria Länsi-Suomi", "sv": "ProAgria Västra Finland", "en": "ProAgria Western Finland"} },{
		  "id": 4, "label": { "fi": "ProAgria Finska Hushållningssälsskapet", "sv": "ProAgria Finska Hushållningssälsskapet", "en": "ProAgria Finska Hushållningssälsskapet"} },{
		  "id": 5, "label": { "fi": "ProAgria Etelä-Savo", "sv": "ProAgria Södra Savolax", "en": "ProAgria South Savo"} },{
		  "id": 6, "label": { "fi": "ProAgria Keski-Suomi", "sv": "ProAgria Mellersta Finland", "en": "ProAgria Central Finland"} },{
		  "id": 7, "label": { "fi": "ProAgria Etelä-Pohjanmaa", "sv": "ProAgria Södra Österbotten", "en": "ProAgria South Ostrobothnia"} },{
		  "id": 8, "label": { "fi": "ProAgria Österbottens svenska lantbrukssällskap", "sv": "ProAgria Österbottens svenska lantbrukssällskap", "en": "ProAgria Österbottens svenska lantbrukssällskap"} },{
		  "id": 9, "label": { "fi": "ProAgria Keski-Pohjanmaa", "sv": "ProAgria Mellersta Österbotten", "en": "ProAgria Central Ostrobothnia"} },{
		  "id": 10, "label": { "fi": "ProAgria Itä-Suomi", "sv": "ProAgria Östra Finland", "en": "ProAgria Eastern Finland"} },{
		  "id": 11, "label": { "fi": "ProAgria Oulu", "sv": "ProAgria Uleåborg", "en": "ProAgria Oulu"} },{
		  "id": 12, "label": { "fi": "ProAgria Lappi", "sv": "ProAgria Lapplands", "en": "ProAgria Lapland"} },{
		  "id": 13, "label": { "fi": "ProAgria Ålands hushållningssällskap", "sv": "ProAgria Ålands hushållningssällskap", "en": "ProAgria Åland"} }]
    }    
  ],

  "examples": [   
    {
	"description": {
	"fi": "Kuinka monta viljatilaa oli vuonna 2025?",
	"sv": "Hur många spannmålsgårdar fanns det år 2025?",
	"en": "How many cereal farms were there in 2025?"
	},

      "request": {
        "method": "GET",

        "url": {
          "fi": "https://taloustohtori.luke.fi/maatalouden-rakennekehitys/omat-valinnat/?omarapo=30&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=28&dim3paataso=0&dim3alataso=0&dim4paataso=0&dim4alataso=0&dim5paataso=0&dim5alataso=0&dim6paataso=0&dim6alataso=0",

          "sv": "https://taloustohtori.luke.fi/sv/jordbrukets-strukturutveckling/egna-val/?omarapo=30&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=28&dim3paataso=0&dim3alataso=0&dim4paataso=0&dim4alataso=0&dim5paataso=0&dim5alataso=0&dim6paataso=0&dim6alataso=0",

          "en": "https://taloustohtori.luke.fi/en/the-structural-development-of-agriculture/own-criteria/?omarapo=30&nayta=laheta&dim1paataso=39&dim1alataso=1&dim2paataso=1&dim2alataso=28&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.",
  "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.",
  "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.",
  "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."
]
  }
}
