001    /*
002     *    GeoAPI - Java interfaces for OGC/ISO standards
003     *    http://www.geoapi.org
004     *
005     *    Copyright (C) 2009-2012 Open Geospatial Consortium, Inc.
006     *    All Rights Reserved. http://www.opengeospatial.org/ogc/legal
007     *
008     *    Permission to use, copy, and modify this software and its documentation, with
009     *    or without modification, for any purpose and without fee or royalty is hereby
010     *    granted, provided that you include the following on ALL copies of the software
011     *    and documentation or portions thereof, including modifications, that you make:
012     *
013     *    1. The full text of this NOTICE in a location viewable to users of the
014     *       redistributed or derivative work.
015     *    2. Notice of any changes or modifications to the OGC files, including the
016     *       date changes were made.
017     *
018     *    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
019     *    NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
020     *    TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
021     *    THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
022     *    PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
023     *
024     *    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
025     *    CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
026     *
027     *    The name and trademarks of copyright holders may NOT be used in advertising or
028     *    publicity pertaining to the software without specific, written prior permission.
029     *    Title to copyright in this software and any associated documentation will at all
030     *    times remain with copyright holders.
031     */
032    package org.opengis.observation;
033    
034    import org.opengis.metadata.Metadata;
035    import org.opengis.metadata.quality.Element;
036    import org.opengis.temporal.TemporalObject;
037    import org.opengis.annotation.UML;
038    
039    import static org.opengis.annotation.Specification.*;
040    import static org.opengis.annotation.Obligation.*;
041    
042    /**
043     * Generic Observation event.
044     * carries a generic  "result" properties of type "anyType".
045     *
046     * @version <A HREF="http://www.opengeospatial.org/standards/om">Implementation specification 1.0</A>
047     * @author Open Geospatial Consortium
048     * @author Guilhem Legal (Geomatys)
049     * @since GeoAPI 2.3
050     */
051    @UML(identifier="Observation", specification=OGC_07022)
052    public interface Observation {
053    
054        /**
055         * The name of the observation as an urn.
056         */
057        String getName();
058    
059        /**
060         * A description of the observation.
061         */
062        String getDefinition();
063    
064        /**
065         * An Observation parameter is a general event-specific parameter.
066         * This will typically be used to record environmental parameters,
067         * or event-specific sampling parameters that are not tightly bound to either the feature-of-interest or the procedure.
068         * NOTE: Parameters that are tightly bound to the procedure should be recorded as part of the procedure description.
069         * For example, the SensorML model associates parameters with specific process elements or stages.
070         * NOTE: The semantics of the parameter must be provided as part of its value.
071    
072         * In some applications it is convenient to use a generic or standard procedure,
073         * or feature-of-interest, rather than define an event-specific process or feature.
074         * In this context, event-specific parameters are bound to the Observation act.
075         */
076        @UML(identifier="parameter", obligation=OPTIONAL, specification=OGC_07022)
077        Object getProcedureParameter();
078    
079        @UML(identifier="resultTime", obligation=OPTIONAL, specification=OGC_07022)
080        TemporalObject getProcedureTime();
081    
082        /**
083         * Instance-specific quality assessment or measure.
084         * Allow multiple quality measures if required.
085         */
086        @UML(identifier="resultQuality", obligation=OPTIONAL, specification=OGC_07022)
087        Element getQuality();
088    
089        @UML(identifier="metadata", obligation=OPTIONAL, specification=OGC_07022)
090        Metadata getObservationMetadata();
091    
092        /**
093        * The samplingTime is the time that the result applies to the feature-of-interest.
094        * This is the time usually required for geospatial analysis of the result.
095        */
096        @UML(identifier="samplingTime", obligation=MANDATORY, specification=OGC_07022)
097        TemporalObject getSamplingTime();
098    
099         /**
100         * The featureOfInterest is a feature of any type (ISO 19109, ISO 19101),
101         * which is a representation of the observation target,
102         * being the real-world object regarding which the observation is made.
103         * such as a specimen, station, tract, mountain, pixel, etc.
104         * The spatial properties (location) of this feature of interest are typically of most interest for spatial analysis of the observation result.
105         */
106        @UML(identifier="featureOfInterest", obligation=MANDATORY, specification=OGC_07022)
107        AnyFeature getFeatureOfInterest();
108    
109        /**
110         * Property-type or phenomenon for which the observation result provides an estimate of its value.
111         * for example "wavelength", "grass-species", "power", "intensity in the waveband x-y", etc.
112         * It must be a property associated with the type of the feature of interest.
113         * This feature-property that provides the (semantic) type of the observation.
114         * The description of the phenomenon may be quite specific and constrained.
115         * The description of the property-type may be presented using various alternative encodings.
116         * If shown inline, the swe:Phenomenon schema is required.
117         * If provided using another encoding (e.g. OWL or SWEET) then the description must be in a remote repository and xlink reference used.
118         */
119        @UML(identifier="observedProperty", obligation=MANDATORY, specification=OGC_07022)
120        Phenomenon getObservedProperty();
121    
122        /**
123         * The result contains the value generated by the procedure.
124         * The type of the observation result must be consistent with the observed property, and the scale or scope for the value must be consistent with the quantity or category type.
125         * Application profiles may choose to constrain the type of the result.
126         *
127         * an xsi:type attribute may appear in the instance to indicate the type of the result
128         */
129        @UML(identifier="result", obligation=MANDATORY, specification=OGC_07022)
130        Object getResult();
131    
132        /**
133         * The procedure is the description of a process used to generate the result.
134         * It must be suitable for the observed property.
135         * NOTE: At this level we do not distinguish between sensor-observations,
136         * estimations made by an observer, or algorithms, simulations, computations and complex processing chains.
137         */
138        @UML(identifier="procedure", obligation=MANDATORY, specification=OGC_07022)
139        Process getProcedure();
140        
141    }