opengeospatial / opengeospatial/ogcapi-processes
Add a new operation GetDomain
@pvretano is already working on this.
Since Apr 27, 2025.
- Dominant language
- AsciiDoc
- Stars
- 63
- Forks
- 46
- Avg merge
- 2d 1h
- Merged PRs (30d)
- 8
Description
New optional GetDomain operation for discovering the parameters dependencies
NB : This subject has been discussed during the ninth december 2024 technical meeting.
State of fact :
In some cases, authorised values for a parameter depends on the value of another parameter,
Currently, it is only possible to trial and error on the API by using the Execute for discovering these dependencies.
New operation proposal :
A solution could be an additional GetDomain operation that delivers a description of authorized value for the remaining parameters depending the value tested for a parameter.
An example of request and reponse is provided below :
Lets say we have process that takes 4 parameters :
– A city name
– A country name
– A district number
– A bounding box
We have a data sample with 3 cities :
– Paris in France with 4 district
– Barcelone in Spain with any district
– Gognies-Chaussée a city that is on the border of France and Belgium
The initial « DescribeProcess » operation display all the possible values :
GET : http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency
{
"id": "urn:exa:wps:examind::test.param.dependency",
"title": "Examind : Test.param.dependency",
"version": "1.0.0",
"jobControlOptions": [
"sync-execute",
"async-execute",
"dismiss"
],
"outputTransmission": [
"reference",
"value"
],
"inputs": [
{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"title": "Country",
"description": "Country.",
"minOccurs": "1",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"France",
"Espagne",
"Belgique"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"title": "City",
"description": "City.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Barcelone",
"Gognies-Chaussée",
"Paris"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:district",
"title": "District",
"description": "District.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"1",
"2",
"3",
"4"
]
},
"dataType": {
"name": "Integer",
"reference": "http://www.w3.org/TR/xmlschema-2/#integer"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"title": "Boundary",
"description": "Boundary.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"supportedCRS": [
{
"crs": "EPSG:4326",
"default": true
},
{
"crs": "CRS:84",
"default": false
},
{
"crs": "EPSG:3395",
"default": false
},
{
"crs": "EPSG:3857",
"default": false
},
{
"crs": "EPSG:27571",
"default": false
},
{
"crs": "EPSG:27572",
"default": false
},
{
"crs": "EPSG:27573",
"default": false
},
{
"crs": "EPSG:27574",
"default": false
}
]
}
}
],
"outputs": [],
"executeEndpoint": "http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/jobs",
"abstract": "Param used to test parameter value dependencies."
}
We now use the new GetDomain operation to get the possibilities by adding the parameter Country = France
POST http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/domain
Body :
{
"inputs": [{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"input": {
"dataType": {
"name": "String"
},
"value": "France"
}
}]
}
The response returns only the matching parameters :
{
"id": "urn:exa:wps:examind::test.param.dependency",
"title": "Examind : Test.param.dependency",
"version": "1.0.0",
"jobControlOptions": [
"sync-execute",
"async-execute",
"dismiss"
],
"outputTransmission": [
"reference",
"value"
],
"inputs": [
{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"title": "Country",
"description": "Country.",
"minOccurs": "1",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"France"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"title": "City",
"description": "City.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Gognies-Chaussée",
"Paris"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:district",
"title": "District",
"description": "District.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"1",
"2",
"3",
"4"
]
},
"dataType": {
"name": "Integer",
"reference": "http://www.w3.org/TR/xmlschema-2/#integer"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"title": "Boundary",
"description": "Boundary.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"supportedCRS": [
{
"crs": "EPSG:4326",
"default": true
},
{
"crs": "CRS:84",
"default": false
},
{
"crs": "EPSG:3395",
"default": false
},
{
"crs": "EPSG:3857",
"default": false
},
{
"crs": "EPSG:27571",
"default": false
},
{
"crs": "EPSG:27572",
"default": false
},
{
"crs": "EPSG:27573",
"default": false
},
{
"crs": "EPSG:27574",
"default": false
}
]
}
}
],
"outputs": [],
"executeEndpoint": "http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/jobs",
"abstract": "Param used to test parameter value dependencies."
}
If we supply the country Belgium and city Gognies-Chaussée, we do no longer have district in the reponse.
POST http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/domain
Body :
{
"inputs": [{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"input": {
"dataType": {
"name": "String"
},
"value": "Belgique"
}
},{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"input": {
"dataType": {
"name": "String"
},
"value": "Gognies-Chaussée"
}
}]
}
Response :
{
"id": "urn:exa:wps:examind::test.param.dependency",
"title": "Examind : Test.param.dependency",
"version": "1.0.0",
"jobControlOptions": [
"sync-execute",
"async-execute",
"dismiss"
],
"outputTransmission": [
"reference",
"value"
],
"inputs": [
{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"title": "Country",
"description": "Country.",
"minOccurs": "1",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Belgique"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"title": "City",
"description": "City.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Gognies-Chaussée"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:district",
"title": "District",
"description": "District.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"dataType": {
"name": "Integer",
"reference": "http://www.w3.org/TR/xmlschema-2/#integer"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"title": "Boundary",
"description": "Boundary.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"supportedCRS": [
{
"crs": "EPSG:4326",
"default": true
},
{
"crs": "CRS:84",
"default": false
},
{
"crs": "EPSG:3395",
"default": false
},
{
"crs": "EPSG:3857",
"default": false
},
{
"crs": "EPSG:27571",
"default": false
},
{
"crs": "EPSG:27572",
"default": false
},
{
"crs": "EPSG:27573",
"default": false
},
{
"crs": "EPSG:27574",
"default": false
}
]
}
}
],
"outputs": [],
"executeEndpoint": "http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/jobs",
"abstract": "Param used to test parameter value dependencies."
}
If we then filter on the country Spain, as the city Barcelone is configured with « Any » district,
All the available districts will be returned
POST http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/domain
Body :
{
"inputs": [{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"input": {
"dataType": {
"name": "String"
},
"value": "Espagne"
}
}]
}
Response :
{
"id": "urn:exa:wps:examind::test.param.dependency",
"title": "Examind : Test.param.dependency",
"version": "1.0.0",
"jobControlOptions": [
"sync-execute",
"async-execute",
"dismiss"
],
"outputTransmission": [
"reference",
"value"
],
"inputs": [
{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"title": "Country",
"description": "Country.",
"minOccurs": "1",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Espagne"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"title": "City",
"description": "City.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Barcelone"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:district",
"title": "District",
"description": "District.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"1",
"2",
"3",
"4"
]
},
"dataType": {
"name": "Integer",
"reference": "http://www.w3.org/TR/xmlschema-2/#integer"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"title": "Boundary",
"description": "Boundary.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"supportedCRS": [
{
"crs": "EPSG:4326",
"default": true
},
{
"crs": "CRS:84",
"default": false
},
{
"crs": "EPSG:3395",
"default": false
},
{
"crs": "EPSG:3857",
"default": false
},
{
"crs": "EPSG:27571",
"default": false
},
{
"crs": "EPSG:27572",
"default": false
},
{
"crs": "EPSG:27573",
"default": false
},
{
"crs": "EPSG:27574",
"default": false
}
]
}
}
],
"outputs": [],
"executeEndpoint": "http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/jobs",
"abstract": "Param used to test parameter value dependencies."
}
If we use the bbox parameter with a envelope englobing Paris and Barcelone we get all the paramters from both cities :
POST http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/domain
Body :
{
"inputs": [{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"input": {
"bbox": [1.5, 41.1, 3.4, 49.2],
"crs": "EPSG:4326"
}
}]
}
Response :
{
"id": "urn:exa:wps:examind::test.param.dependency",
"title": "Examind : Test.param.dependency",
"version": "1.0.0",
"jobControlOptions": [
"sync-execute",
"async-execute",
"dismiss"
],
"outputTransmission": [
"reference",
"value"
],
"inputs": [
{
"id": "urn:exa:wps:examind::test.param.dependency:input:country",
"title": "Country",
"description": "Country.",
"minOccurs": "1",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"France",
"Espagne"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:city",
"title": "City",
"description": "City.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"Barcelone",
"Paris"
]
},
"dataType": {
"name": "String",
"reference": "http://www.w3.org/TR/xmlschema-2/#string"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:district",
"title": "District",
"description": "District.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"literalDataDomains": [
{
"allowedValues": {
"allowedValues": [
"1",
"2",
"3",
"4"
]
},
"dataType": {
"name": "Integer",
"reference": "http://www.w3.org/TR/xmlschema-2/#integer"
}
}
]
}
},
{
"id": "urn:exa:wps:examind::test.param.dependency:input:boundary",
"title": "Boundary",
"description": "Boundary.",
"minOccurs": "0",
"maxOccurs": "1",
"input": {
"supportedCRS": [
{
"crs": "EPSG:4326",
"default": true
},
{
"crs": "CRS:84",
"default": false
},
{
"crs": "EPSG:3395",
"default": false
},
{
"crs": "EPSG:3857",
"default": false
},
{
"crs": "EPSG:27571",
"default": false
},
{
"crs": "EPSG:27572",
"default": false
},
{
"crs": "EPSG:27573",
"default": false
},
{
"crs": "EPSG:27574",
"default": false
}
]
}
}
],
"outputs": [],
"executeEndpoint": "http://localhost:8080/examind/WS/wps/default/processes/urn:exa:wps:examind::test.param.dependency/jobs",
"abstract": "Param used to test parameter value dependencies."
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.