A service can describe any number of data objects using <Object/> elements in a service <Profile/>. A data object has a unique url name and additional attributes, describing the object, based upon the profile XML schema as defined in section 6.5.
Note: EXLAP before version 1.3 allowed 0..n <Description/> elements within the <Object/> element. They should be gracefully ignored to allow EXLAP 1.3 implementations the processing of older service profile definitions.
Format for the definition of an <Object/>: <Object url="name" {context="[global|session]"} characteristic="[static|dynamic|event]" {interval="xsd:positiveInteger-canonical(0)"} {required="[true|false]"}> 1..n * <[Absolute|Activity|Alternative|Binary|Enumeration| ListEntity|ObjectEntity|Relative|Text|Time]/> </Object> Example:
<Object url="VehicleSpeed" context="global" characteristic="dynamic" interval="10" required="false">
<Absolute name="VehicleSpeed" unit="km/h"/> </Object>
The example shows an <Object/> representing the speed of the car that is represented by a <Relative/> element. Applications are able to subscribe (i.e. “read”) these information and “dynamic” means the values contained are subject of change.
Attribute or element
Use Default Description
url required Unified identifier to access the desired data object
e.g. “EngineSpeed” from a client. Uniqueness of the string used in url shall be assured in the context of a single service interface profile.
required optional false The optional attribute required denotes if an object must be implemented by a service provider or not. If an object is not mandatory to implement, a service consumer shall check via the <Dir/> command if that object is available and can be used.
interval optional 0 The optional attribute interval is designed to give subscribing client applications an idea how often the data will be updated. This attribute describes the minimum time in milliseconds between two consecutive updates e.g. the specified mean cycle time of the data source if applicable. The default interval “0” does mean that there is no information regarding the update interval available.
context optional Defines the operating context of this object. • global: this data object exists once per
service. An update to this object will be send to all sessions..
• session: this data object exists once per session. An update to this object will be send to the corresponding session only.
characteristic required Describes the characteristic of the object value. • static: The values of this object remain
constant during the connection.
• event: A signal where the appearance / update of the object is the information itself, other to dynamic where the information is within the content.
• dynamic: Data from sources that produce a continuous stream of sensor information ( e.g. a sensor that measures a vehicles speed all
10ms). Updates will be received when for example new sensor information is measured or generated, even if the value content did not change. A data object with this attribute set cannot be throttled (see ival attribute in <Subscribe/> command in section 3.5.4). <Absolute/> <Activity/> <Alternative/> <Binary/> <Enumeration/> <ListEntity/> <ObjectEntity/> <Relative/> <Text/> <Time/>
required Choice of 1..n member type elements defining
the content that object contains as described in section 4.6.
Table 9: Elements and attributes of element <Object/>
Multiple member elements may be necessary where multiple instances exists e.g. a potential DoorPosition object, where each door requires an own position information. Multiple members are also required when the data types of the members are heterogeneous resp. of different type. An example for that is a geographical position where two physical values (latitude, longitude), two hemisphere information (North/South and East/West and additional a time of generation information) are needed.
In addition data objects can have a global session context or a local session context (i.e. <Object context="global "/> or <Object context="session "/>). A global session context denotes that a data object within the services is applicable for all sessions together. Any update to that object will be sent to all the sessions. If a data object context is per session then each session will have an individual value for that object maintained in the service.
Example:
<Object url="DoorPosition" context="global" characteristic="event" required="false"> <Enumeration name="FrontLeft"> <Member id="opened"/> <Member id="closed"/> <Member id="ajar"/> </Enumeration> <Enumeration name="FrontRight"> <Member id="opened"/> <Member id="closed"/> <Member id="ajar"/> </Enumeration> <Enumeration name="RearLeft"> <Member id="opened"/> <Member id="closed"/> <Member id="ajar"/> </Enumeration> <Enumeration name="RearRight"> <Member id="opened"/> <Member id="closed"/> <Member id="ajar"/> </Enumeration> </Object>
<Object url="WGS84Position" context="global" characteristic="dynamic" required="false">
<Absolute name="Latitude" unit="arcDegree"/> <Absolute name="Longitude" unit="arcDegree"/> <Absolute name="Height" unit="m"/>
</Object>