All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.fispace.api.DomainAgriculture Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (C) 2013 FIspace ([email protected])
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package eu.fispace.api;

import eu.fispace.api.ag.*;
import eu.limetri.ygg.api.CapabilityType;
import eu.limetri.ygg.api.CapabilityTypeRegistration;

/**
 *
 * @author Timon Veenstra 
 */
public class DomainAgriculture {

    public static final String DOMAIN = "ag";
    public static final String SCHEMA = "classpath:/schema/domain/ag/AGMessages.xsd";
    public static final String CONTEXT_PATH = "eu.fispace.api.ag";

    /**
     * Capability to produce ActivityField data
     *
     * @since 0.16.0
     * @see ActivityFieldDataRequest and -Response
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_ACTIVITY_FIELD_DATA = new CapabilityType()
            .withName("activity field data")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(ActivityFieldDataRequest.class.getSimpleName())
            .withResponseMessageType(ActivityFieldDataResponse.class.getSimpleName());

    /**
     * Capability to produce ActivityField data
     *
     * @since 0.16.0
     * @see ActivityFieldLocationRequest and -Response
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_ACTIVITY_FIELD_LOCATION = new CapabilityType()
            .withName("activity field location")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(ActivityFieldLocationRequest.class.getSimpleName())
            .withResponseMessageType(ActivityFieldLocationResponse.class.getSimpleName());

    /**
     * Capability to be implemented by a system that is capable of providing additional information to an expert system.
     * 
     * Example: an farmer management system could use this capability to send additional information for a plant diagnosis
     * to expert system
     *
     * @since 0.10.1
     * @see AdditionalInformationResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_ADDITIONAL_INFORMATION_RESPONSE = new CapabilityType()
        .withName("PROVIDE_ADDITIONAL_INFORMATION_RESPONSE")
        .withSchemaLocation(SCHEMA)
        .withContextPath(CONTEXT_PATH)
        .withRequestMessageType(AdditionalInformationResponse.class.getSimpleName());
    
    /**
     * This capability is to be provided by a "Additional information request module" to provide additional information data to a client.
     * 
     * Expected behaviour of the system implementing this capability:
     * - if a request for plant diagnosis request data cannot be fulfilled at once, the answer should be HTTP 204
     * - if a request for plant diagnosis request data can be fulfilled at once, the answer should be HTTP 303, including a URL where the actual diagnosis request data can be fetched
     * - if the URL returned by a previous 303 answer is used to call this capability, the answer should be the actual PlantDiagnosisRequestDataResponseMessage
     * 
     * @since 0.10.0
     * @see AdditionalInformationResponseDataRequest
     * @see AdditionalInformationResponseDataResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_ADDITIONAL_INFORMATION_RESPONSE_DATA = new CapabilityType()
            .withName("PROVIDE_ADDITIONAL_INFORMATION_RESPONSE_DATA")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(AdditionalInformationResponseDataRequest.class.getSimpleName())
            .withResponseMessageType(AdditionalInformationResponseDataResponse.class.getSimpleName());

    /**
     * Capability to be implemented by a system that is capable of providing an (expert) advice.
     * 
     * Example: an expert system could provide this capability, then a farm management system could use 
     * this capability to get an advice from the expert system
     *
     * @since 0.10.1
     * @see AdviceRequest
     * @see AdviceResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_ADVICE = new CapabilityType()
            .withName("provide advice")	
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(AdviceRequest.class.getSimpleName())
            .withResponseMessageType(AdviceResponse.class.getSimpleName());

    /**
     * Capability to be implemented by a system that is capable of providing an (expert) advice.
     *
     * Example: an expert system could provide this capability, then a farm management system could use
     * this capability to get an advice from the expert system
     *
     * @since 0.10.1
     * @see AdviceRequest
     * @see AdviceResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_GREENHOUSE_ADVICE = new CapabilityType()
            .withName("provide greenhouse advice")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(GreenhouseAdviceRequest.class.getSimpleName())
            .withResponseMessageType(AdviceResponse.class.getSimpleName());

    /**
     * Capability to produce CropField data
     *
     * @since 0.16
     * @see CropFieldDataWFPARequest and -Response
     * */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_CROPFIELD_DATA_WFPA = new CapabilityType()
            .withName("cropfield data wfpa")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(CropFieldDataWFPARequest.class.getSimpleName())    
            .withResponseMessageType(CropFieldDataWFPAResponse.class.getSimpleName());     

    /**
     * Capability to be implemented by a system that is capable of asking further advice on an plant diagnosis.
     * 
     * Example: a crop manager management system could use this capability to send a further advice request
     * to consulting firm expert system
     *
     * @since 0.16.0
     * @see FurtherAdviceRequest
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_FURTHER_ADVICE_REQUEST = new CapabilityType()
        .withName("PROVIDE_FURTHER_ADVICE_REQUEST")
        .withSchemaLocation(SCHEMA)
        .withContextPath(CONTEXT_PATH)
        .withRequestMessageType(FurtherAdviceRequest.class.getSimpleName());
    
    /**
     * This capability is to be provided by a "Further advice request module" to provide further advice request data to a client.
     * 
     * Expected behavior of the system implementing this capability:
     * - if a request for plant diagnosis request data cannot be fulfilled at once, the answer should be HTTP 204
     * - if a request for plant diagnosis request data can be fulfilled at once, the answer should be HTTP 303, including a URL where the actual diagnosis request data can be fetched
     * - if the URL returned by a previous 303 answer is used to call this capability, the answer should be the actual PlantDiagnosisRequestDataResponseMessage
     * 
     * @since 0.16.0
     * @see FurtherAdviceRequestDataRequest
     * @see FurtherAdviceRequestDataResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_FURTHER_ADVICE_REQUEST_DATA = new CapabilityType()
        .withName("PROVIDE_FURTHER_ADVICE_REQUEST_DATA")
        .withSchemaLocation(SCHEMA)
        .withContextPath(CONTEXT_PATH)
        .withRequestMessageType(FurtherAdviceRequestDataRequest.class.getSimpleName())
        .withResponseMessageType(FurtherAdviceRequestDataResponse.class.getSimpleName());

    /**
     * Capability to be implemented by a system that is capable of providing an 
     * (expert) plant diagnosis.
     * 
     * Example: a grower management system could use this capability to send an 
     * plant diagnosis to expert system
     *
     * @since 0.16
     * @see PlantDiagnosisRequest
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PLANT_DIAGNOSIS_REQUEST = new CapabilityType()
        .withName("PLANT_DIAGNOSIS_REQUEST")
        .withSchemaLocation(SCHEMA)
        .withContextPath(CONTEXT_PATH)
        .withRequestMessageType(PlantDiagnosisRequest.class.getSimpleName());

    /**
     * This capability is to be provided by a "Plant diagnosis request module" to provide plant diagnosis request data to a client.
     * 
     * Expected behaviour of the system implementing this capability:
     * - if a request for plant diagnosis request data cannot be fulfilled at once, the answer should be HTTP 204
     * - if a request for plant diagnosis request data can be fulfilled at once, the answer should be HTTP 303, including a URL where the actual diagnosis request data can be fetched
     * - if the URL returned by a previous 303 answer is used to call this capability, the answer should be the actual PlantDiagnosisRequestDataResponseMessage
     * 
     * @since 0.16
     * @see PlantDiagnosisRequestDataRequest
     * @see PlantDiagnosisRequestDataResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_PLANT_DIAGNOSIS_REQUEST_DATA = new CapabilityType()
            .withName("PROVIDE_PLANT_DIAGNOSIS_REQUEST_DATA")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(PlantDiagnosisRequestDataRequest.class.getSimpleName())    
            .withResponseMessageType(PlantDiagnosisRequestDataResponse.class.getSimpleName());     

     /**
     * Capability to provide a schedule for farm operations
     * 
     * @since 0.16
     * @see ScheduleRequest and -Review
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_SCHEDULE = new CapabilityType()
            .withName("schedule")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(ScheduleRequest.class.getSimpleName())
            .withResponseMessageType(ScheduleResponse.class.getSimpleName());

     /**
     * Capability to receive an "advice available notification"
     * 
     * Example: a farm management system, that is requesting advices from experts, could provide 
     * this capability so that it can be informed by an expert system as soon as the advice that was 
     * requested by the farmer (via the capability @PROVIDE_ADVICE) is ready.
     * 
     * @since 0.11.0
     * @see AdviceAvailableNotification
    
    @CapabilityTypeRegistration
    public static final CapabilityType RECEIVE_ADVICE_AVAILABLE_NOTIFICATION = new CapabilityType()
            .withName("RECEIVE_ADVICE_AVAILABLE_NOTIFICATION")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(AdviceAvailableNotification.class.getSimpleName())
            .withResponseMessageType(Messages.Untyped.class.getSimpleName()); */

    /**
     *
     * @since 0.7.2
     * @see CropFieldAdviceRequestMessage
    
    @CapabilityTypeRegistration
    public static final CapabilityType RECEIVE_ADVICE_REQUEST = new CapabilityType()
            .withName("greenhouse advice")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(CropFieldAdviceRequestMessage.class.getSimpleName())
            .withResponseMessageType(Messages.Untyped.class.getSimpleName()); */
    
    
   
    /**
     * This capability is to be provided by a "weather conditions provider" to provide weather information to a client.
     * 
     * Expected behaviour of the system implementing this capability:
     * - if a request for weather info cannot be fulfilled at once, the answer should be HTTP 204
     * - if a request for weather info can be fulfilled at once, the answer should be HTTP 303, including a URL where the actual weather info can be fetched
     * - if the URL returned by a previous 303 answer is used to call this capability, the answer should be the actual ProvideWeatherConditionsResponseMessage
     * 
     * @since 0.10.0
     * @see ProvideWeatherConditionsRequestMessage
     * @see ProvideWeatherConditionsResponseMessage
    
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WEATHER_CONDITIONS = new CapabilityType()
            .withName("PROVIDE_WEATHER_CONDITIONS")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(ProvideWeatherConditionsRequestMessage.class.getSimpleName())
            .withResponseMessageType(ProvideWeatherConditionsResponseMessage.class.getSimpleName());  */
    
    /**
     * Capability to receive sensor values
     * 
     * Example: FIspace provides this capabilty so that an external system can send sensor values for event detection
     * 
     * @since 0.10.1
     * @see ReceiveSensorValuesRequestMessage

    @CapabilityTypeRegistration
    public static final CapabilityType RECEIVE_SENSOR_VALUES = new CapabilityType()
            .withName("receive sensor values")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(SensorValuesRequest.class.getSimpleName())
            .withResponseMessageType(Messages.Untyped.class.getSimpleName());     */

    /**
     *
     * Capability to search for farmers to external marketplace of OPEKEPE.This capability
     * is used by Marketplace Operations Service.
     * @see SearchForFarmersRequest
     * @see SearchForFarmersResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType SEARCH_FOR_FARMERS = new CapabilityType()
            .withName("SEARCH_FOR_FARMERS")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(SearchForFarmersRequest.class.getSimpleName())
            .withResponseMessageType(SearchForFarmersResponse.class.getSimpleName());

     /**
     * Capability to provide sensor data on request
     * 
     * Example: a farmer could provide this capability, so that business partners 
     * could use this capability to get sensor values from the farmer's system
     *
     * @since 0.16
     * @see SensorDataRequest
     * @see SensorDataResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_SENSOR_DATA = new CapabilityType()
            .withName("provide sensor data")	
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(SensorDataRequest.class.getSimpleName())
            .withResponseMessageType(SensorDataResponse.class.getSimpleName());
    /**
     * Capability to provide sensor values on request
     * 
     * Example: a farmer could provide this capability, so that business partners 
     * could use this capability to get sensor values from the farmer's system
     *
     * @since 0.10.1
     * @see SensorValuesRequest
     * @see SensorValuesResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_SENSOR_VALUES = new CapabilityType()
            .withName("provide sensor values")	
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(SensorValuesRequest.class.getSimpleName())
            .withResponseMessageType(SensorValuesResponse.class.getSimpleName());

    /**
     *
     * Capability to provide Task Data by as well a Farm Management Information 
     * System as a Agricultural Activity Server. 
     * This Task data is based on drmCrop and able to handle individual Tasks.
     * To exchange ISO11783 TaskFile.xml files, use PROVIDE_TASK_FILE.
     * @see TaskDataRequest and -Response
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_TASK_DATA = new CapabilityType()
            .withName("provide task data")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(TaskDataRequest.class.getSimpleName())
            .withResponseMessageType(TaskDataResponse.class.getSimpleName());

    /**
     *
     * Capability to provide an ISO11783 TaskFile by as well a Farm Management  
     * Information System as a Agricultural Activity Server. 
     * @see TaskFileRequest and -Response
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_TASK_FILE = new CapabilityType()
            .withName("provide task file")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(TaskFileRequest.class.getSimpleName())
            .withResponseMessageType(TaskFileResponse.class.getSimpleName());

    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_TRACEABILITY = new CapabilityType()
            .withName("provide traceability")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(BasicTraceabilityInformationRequest.class.getSimpleName())
            .withResponseMessageType(BasicTraceabilityInformationResponse.class.getSimpleName());

    
    /**
     * Capability for providing a weather scenario (a set of weather 
     * predictions for given locations and time interval).
     * The message use the drmCrop message format.
     *
     * @since 0.12.2
     * @see WeatherScenarioRequest
     * @see WeatherScenarioResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WEATHER_SCENARIO = new CapabilityType()
            .withName("provide weather scenario")	
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(WeatherScenarioRequest.class.getSimpleName())
            .withResponseMessageType(WeatherScenarioResponse.class.getSimpleName());

    /**
     * Capability for providing a weather scenario (a set of weather 
     * predictions for given locations and time interval).
     * The message use the simplified, non-drmCrop message format.
     *
     * @since 0.14.0
     * @see WeatherScenarioSimpleRequest
     * @see WeatherScenarioSimpleResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WEATHER_SCENARIO_SIMPLE = new CapabilityType()
            .withName("provide weather scenario, simple message format")	
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(WeatherScenarioSimpleRequest.class.getSimpleName())
            .withResponseMessageType(WeatherScenarioSimpleResponse.class.getSimpleName());

    /**
     * Capability to produce a whole field Phytophthora advice
     *
     * @since 0.16.0
     * @see WFPhytophthoraAdviceRequest
     * @see WFPhytophthoraAdviceResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WF_PHYTOPHTHORA_ADVICE = new CapabilityType()
            .withName("whole field phytophthora advice")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(WFPhytophthoraAdviceRequest.class.getSimpleName())
            .withResponseMessageType(WFPhytophthoraAdviceResponse.class.getSimpleName());

    /**
     * This capability is to be provided by a "Farm management Information System" 
     * to provide the criteria for workability criteria for different operation 
     * techniques.
     * 
     * Expected behavior of the system implementing this capability:
     * - if a request for workability criteria cannot be fulfilled at once, the 
     *   answer should be HTTP 204
     * - if a request for workability criteria can be fulfilled at once, the 
     *   answer should be HTTP 303, including a URL where the actual weather 
     *   info can be fetched
     * - if the URL returned by a previous 303 answer is used to call this 
     *   capability, the answer should be the actual WorkabilityCriteriaResponse
     * 
     * @since 0.10.0
     * @see WorkabilityCriteriaRequest
     * @see WorkabilityCriteriaResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WORKABILITY_CRITERIA = new CapabilityType()
            .withName("workability criteria")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(WorkabilityCriteriaRequest.class.getSimpleName())
            .withResponseMessageType(WorkabilityCriteriaResponse.class.getSimpleName());

    /**
     * This capability is to be provided by a "Bad weather module" to provide 
     * workability Data to a client.
     * 
     * Expected behavior of the system implementing this capability:
     * - if a request for weather info cannot be fulfilled at once, the answer 
     *   should be HTTP 204
     * - if a request for weather info can be fulfilled at once, the answer 
     *   should be HTTP 303, including a URL where the actual weather info can 
     *   be fetched
     * - if the URL returned by a previous 303 answer is used to call this 
     *   capability, the answer should be the actual WoirkabilityDataResponse
     * 
     * @since 0.10.0
     * @see WorkabilityDataRequest
     * @see WorkabilityDataResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_WORKABILITY_DATA = new CapabilityType()
            .withName("PROVIDE_WORKABILITY_DATA")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(WorkabilityDataRequest.class.getSimpleName())
            .withResponseMessageType(WorkabilityDataResponse.class.getSimpleName());


    /**
     * Capability for providing an irrigation advice based on the tensiometer measurements.
     *
     * @since 0.15.0
     * @see IrrigationAdviceRequest
     * @see IrrigationAdviceResponse
     */
    @CapabilityTypeRegistration
    public static final CapabilityType PROVIDE_IRRIGATION_ADVICE = new CapabilityType()
            .withName("provide irrigation advice")
            .withSchemaLocation(SCHEMA)
            .withContextPath(CONTEXT_PATH)
            .withRequestMessageType(IrrigationAdviceRequest.class.getSimpleName())
            .withResponseMessageType(IrrigationAdviceResponse.class.getSimpleName());

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy