WORLD METEOROLOGICAL ORGANIZATION
________________

MEETING OF EXPERT TEAM ON INTEGRATED DATA MANAGEMENT

GENEVA, 17-20 SEPTEMBER 2001

ET-IDM/Doc. 5(1)
(12.VI.2001)
____

ITEM: 1.2

ENGLISH ONLY

 

Applying the Resource Description Framework (RDF) to hydrometeorological metadata

Submitted byA. Besprozvannykh

Motivation

The Resource Description Framework (RDF http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/, http://www.w3.org/TR/2000/CR-rdf-schema-20000327/), standardized by a W3C recommendation, provides a formal model of metadata and a vocabulary. The RDF model is similar in scope to the relational model of data but it is easier to adapt to various object oriented and hierarchical data repositories, while remaining compatible with the relational model. Using standard language to describe all metadata allow to store, to process and to present metadata by one way.

Fundamentals

The metadata subsystem formulates queries and their results in terms of resources, properties, and values. For example, the simplest query asks for the values of several properties of a given resource. The results are collectively known as a resource description. Other queries request information for all the resources belonging to a given class. The queries can contain conditions to request particular resources.

Resources

A resource is anything with a distinct identity including, but not limited to, utility assets such as element definitions, observation platforms and data sets. In general, a Uniform Resource Identifier (URI http://www.isi.edu/in-notes/rfc2396.txt) with an optional fragment identifier can identify any resource. All resources have unique ResourceID.

Properties

A property is some aspect of a resource that can be described. For example, name and e-mail adders could be properties of a person. When properties appear in queries they are represented by the type PropertyID. However, a property is itself a resource and PropertyID is defined as a ResourceID. A property has a domain, which is the set of resources to which it applies and a range, which is the set of values it can take. Associations between resources are created by properties whose range, like the domain, is a set of resources. For example, the Latitude property might associate with an observation station and with a location of a ship.

Property Values

A value in the Resource Description Framework is an elementary unit of data, which can be a literal such as a string or integer, or a reference to a resource.

Resource Descriptions

The purpose of the metadata subsystem is to supply information about resources, or resource descriptions. A resource description gives a value for each of several properties of a given resource. The simplest resource description describes a single property and is made up of a resource identifier, a property identifier and a simple value. This elemental resource description is sometimes called a statement, or a triple.

Classes

A class is a set of resources to which a given set of properties applies. For example, the set of all observation platforms is a class that provides observations. Classes are referenced in queries by the type ClassID. As with properties, a class is itself a kind of resource and a ClassID is defined as a ResourceID.

Relationship to Other Models

RDF Relational Model Object model
Resource Table row Object
Property Column name Attribute Name
Class Table Class
Resource Description Set of Column values Instance of Class
URI Key value Property of Object
Value Field value Property of Object

Storing Metadata

All metadata maintained bay relational DBMS into three tables and views.

TripBase_Sys Table

Column Name Type Remark Example

ResourceIdx

NUMBER Unique 4
Subject VARCHAR2 Unique 2250527540
SchemaIdx NUMBER Unique 26
Predicate VARCHAR2 Unique CountryArea
ObjectIdx NUMBER   -1
Object VARCHAR2   CHINA

Triples_Sys_Res Table

Column Name Type Remark Example
Idx NUMBER Unique 4
Name VARCHAR2 Unique http://www.meteo.ru/rdf/tb/stn/wmo/v9a

Triples_Sys_Sch Table

Column Name Type Remark Example
Idx NUMBER Unique 26
Name VARCHAR2 Unique http://www.meteo.ru/metadata/200008/GTS_Station

 

RDF metadata example for WMO WEATHER REPORTING No.9 VOLUME A

Schema definition:

<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<rdf:RDF xml:lang="en"
xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/TR/1999/PR-rdf-schema-19990303#"
xmlns:dt="http://www.meteo.ru/metadata/200008/DataTypes#">
<rdfs:Class rdf:ID="GTS_Station">
<rdfs:label xml:lang="en">GTS Station</rdfs:label>
<rdfs:label xml:lang="en">??????? ???</rdfs:label>
<rdfs:comment>GTS Station from WMO Vol.9a</rdfs:comment>
</rdfs:Class>
<rdf:Property ID="RegionId">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">WMO region number</rdfs:label>
<rdfs:label xml:lang="ru">????? ??????? ???</rdfs:label>
<rdfs:comment></rdfs:comment>
</rdf:Property>

<rdf:Property ID="RegionName">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Name of WMO region</rdfs:label>
<rdfs:label xml:lang="ru">???????????? ??????? ???</rdfs:label>
<rdfs:comment>Region name, in English</rdfs:comment>
</rdf:Property>

<rdf:Property ID="CountryArea">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Name of country or area</rdfs:label>
<rdfs:label xml:lang="ru">???????????? ?????? ??? ??????</rdfs:label>
<rdfs:comment>Country or area in which station is located</rdfs:comment>
</rdf:Property>

<rdf:Property ID="CountryCode">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Code number of country or area</rdfs:label>
<rdfs:label xml:lang="ru">??? ?????? ??? ??????</rdfs:label>
<rdfs:comment>Code number used in pre-May 1997 data files to identify the country or area of a station</rdfs:comment>
</rdf:Property>

<rdf:Property ID="StationId">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Station identifier number</rdfs:label>
<rdfs:label xml:lang="ru">????????????????? ????? ???????</rdfs:label>
<rdfs:comment>The station identifier is the "KeyField Value" used by the data base</rdfs:comment>
</rdf:Property>

<rdf:Property ID="IndexNbr">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">WMO Station Index Number</rdfs:label>
<rdfs:label xml:lang="ru">????? ??????? ???</rdfs:label>
<rdfs:comment>Unique station identifier, used in the transmission of weather observation reports from the station</rdfs:comment>
</rdf:Property>

<rdf:Property ID="IndexSubNbr">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Sub-index number</rdfs:label>
<rdfs:label xml:lang="ru">?????????????? ????? ??????? ???</rdfs:label>
<rdfs:comment>A sub-index number is inserted for each station. It is used in the data file to differen-tiate between two stations with the
same index number</rdfs:comment>
</rdf:Property>

<rdf:Property ID="StationName">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Name of station</rdfs:label>
<rdfs:label xml:lang="ru">???????????? ???????</rdfs:label>
<rdfs:comment>Station's name, assigned by the country</rdfs:comment>
</rdf:Property>

<rdf:Property ID="Latitude">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="dt:Decimal"/>
<rdfs:label xml:lang="en">Latitude</rdfs:label>
<rdfs:label xml:lang="ru">??????</rdfs:label>
<rdfs:comment>Latitude, in degrees (+) North of the Equator (-) South of the Equator</rdfs:comment>
</rdf:Property>

<rdf:Property ID="Longitude">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="dt:Decimal"/>
<rdfs:label xml:lang="en">Longitude</rdfs:label>
<rdfs:label xml:lang="ru">???????</rdfs:label>
<rdfs:comment>Longitude, in degrees (+) East of the Greenwich meridian (-) West of the Greenwich meridian</rdfs:comment>
</rdf:Property>

<rdf:Property ID="Hp">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="dt:Integer"/>
<rdfs:label xml:lang="en">Elevation of the station, in metres</rdfs:label>
<rdfs:label xml:lang="ru">?????? ???????</rdfs:label>
<rdfs:comment>Elevation of the station, in metres; the reference/datum level to which barometric pressure reports at the station refer</rdfs:comment>
</rdf:Property>

<rdf:Property ID="HpFlag">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Indicates approximate figure</rdfs:label>
<rdfs:label xml:lang="ru">????????? ?????? ???????</rdfs:label>
<rdfs:comment>A hash sign ("#") is inserted if the elevation figure shown for HP is approximate</rdfs:comment>
</rdf:Property>

<rdf:Property ID="Hha">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="dt:Integer"/>
<rdfs:label xml:lang="en">Elevation or Altitude: H or HA, in metres</rdfs:label>
<rdfs:label xml:lang="ru">?????? ?????</rdfs:label>
<rdfs:comment>Elevation of the ground</rdfs:comment>
</rdf:Property>

<rdf:Property ID="HhaFlag">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Indicates approximate figure</rdfs:label>
<rdfs:label xml:lang="ru">????????? ?????? ?????</rdfs:label>
<rdfs:comment>A hash sign ("#") appears if the elevation figure shown for H or HA is approximate</rdfs:comment>
</rdf:Property>

<rdf:Property ID="PressureDefId">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Pressure level</rdfs:label>
<rdfs:label xml:lang="ru">??????? ????????</rdfs:label>
<rdfs:comment>For stations which do not indicate air pressure reduced to mean sea level in their synoptic reports</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_1">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 00 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 00</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_2">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 03 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 03</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_3">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 06 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 06</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_4">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 09 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 09</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_5">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 12 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 12</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_6">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 15 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 15</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_7">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 18 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 18</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="SO_8">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Surface synoptic observations:at 21 UTC</rdfs:label>
<rdfs:label xml:lang="ru">????????????? ?????????? ? ???? 21</rdfs:label>
<rdfs:comment>("X") - Surface synoptic observations are made regularly</rdfs:comment>
</rdf:Property>

<rdf:Property ID="ObsHs">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Hourly or Half-hourly surface observations</rdfs:label>
<rdfs:label xml:lang="ru">????????? ??????????</rdfs:label>
<rdfs:comment>Surface observations are made on an hourly or half-hourly basis</rdfs:comment>
</rdf:Property>

<rdf:Property ID="UA_1">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Upper-air observations at 00 UTC</rdfs:label>
<rdfs:label xml:lang="ru">?????????????? ?????????? ? ???? 00</rdfs:label>
<rdfs:comment>Upper-air observation</rdfs:comment>
</rdf:Property>

<rdf:Property ID="UA_2">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Upper-air observations at 06 UTC</rdfs:label>
<rdfs:label xml:lang="ru">?????????????? ?????????? ? ???? 06</rdfs:label>
<rdfs:comment>Upper-air observation</rdfs:comment>
</rdf:Property>

<rdf:Property ID="UA_3">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Upper-air observations at 12 UTC</rdfs:label>
<rdfs:label xml:lang="ru">?????????????? ?????????? ? ???? 12</rdfs:label>
<rdfs:comment>Upper-air observation</rdfs:comment>
</rdf:Property>

<rdf:Property ID="UA_4">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Upper-air observations at 18 UTC</rdfs:label>
<rdfs:label xml:lang="ru">?????????????? ?????????? ? ???? 18</rdfs:label>
<rdfs:comment>Upper-air observation</rdfs:comment>
</rdf:Property>

<rdf:Property ID="ObsRems">
<rdfs:domain rdf:resource="#GTS_Station"/>
<rdfs:range rdf:resource="rdfs:Literal"/>
<rdfs:label xml:lang="en">Other observations and remarks</rdfs:label>
<rdfs:label xml:lang="ru">?????? ?????????? ? ??????????</rdfs:label>
<rdfs:comment>See Code Table A</rdfs:comment>
</rdf:Property>
</rdf:RDF>

 

Example of document:

<?xml version='1.0' encoding='windows-1251'?>
<!DOCTYPE rdf:RDF [
<!ENTITY a 'http://www.meteo.ru/metadata/200008/GTS_Station#'>
<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
]>
<rdf:RDF xmlns:a="&a;"
xmlns:rdf="&rdf;">
<a:GTS_Station rdf:about="http://www.meteo.ru/rdf/tb/stn/wmo/v9a#2250527540">
<a:CountryArea>CHINA</a:CountryArea>
<a:CountryCode>2250</a:CountryCode>
<a:Hha>3301</a:Hha>
<a:HhaFlag>#</a:HhaFlag>
<a:Hp>3302</a:Hp>
<a:IndexNbr>52754</a:IndexNbr>
<a:IndexSubNbr>0</a:IndexSubNbr>
<a:Latitude>37.2</a:Latitude>
<a:Longitude>100.08</a:Longitude>
<a:ObsRems>CLIMAT(C)</a:ObsRems>
<a:RegionId>2</a:RegionId>
<a:RegionName>ASIA</a:RegionName>
<a:SO_1>X</a:SO_1>
<a:SO_2>X</a:SO_2>
<a:SO_3>X</a:SO_3>
<a:SO_4>X</a:SO_4>
<a:SO_5>X</a:SO_5>
<a:SO_6>X</a:SO_6>
<a:SO_7>X</a:SO_7>
<a:SO_8>X</a:SO_8>
<a:StationId>3370</a:StationId>
<a:StationName>GANGCA</a:StationName>
<a:UA_1>.</a:UA_1>
<a:UA_2>.</a:UA_2>
<a:UA_3>.</a:UA_3>
<a:UA_4>.</a:UA_4>
<a:coordinates>37,2,100,08</a:coordinates>
<a:image>circle</a:image>
</a:GTS_Station>
</rdf:RDF>

Such type definition developed for set of various type of metadata. Schemas available from Web site. Data loaded in tables defined above. RDF document can be transformed to HTML or GIS layer to present data in Web brouser.

RDF Query

To select meta data from data base SQL RDF language is using:

SELECT Schema_Name#Property_Name1, Schema_Name#Property_Name2
FROM Resource_Name#Resource_Id
WHERE Property_Name2 = "XXXXXX";

Example:

SELECT http://www.meteo.ru/metadata/200008/GTS_Station#*
FROM http://www.meteo.ru/rdf/tb/stn/wmo/v9a#LIKE '6310%'
WHERE Hp>500";

Select all properties from observing station (WMO WEATHER REPORTING No.9 VOLUME A) for Russian Federation stations where Elevation of the station, in metres (Hp) more then 500 meters.

 

RDF Query Processing

System node

Document format

Operations

Client browser

HTML, Applet

Request preparation. Communication with Web container using HTTP.

Web container

SQL RDF

SQL RDF Query preparation. Communication with EJB container.

EJB container

XML RDF Object

Parsing SQL RDF Query. Selecting data from database. Creating RDF Object

Web container

XML RDF Doc

Converting into HTML. Sending Document to client

Client browser

HTML, Applet

Data presentation.

 

Application program can receive metadata information using HTTP protocol and RDF format of data. Schema definition allows understanding format of metadata.

Example of technology you can see on site http://www.meteo.ru:8080/testwmo/index.html

Project in developing state is Web based technology to online registering Data Sets with hydrometeorological data and online access to metadata.


Using XML for Hydro Meteorological Data Exchange

 

Motivation

XML as markup language is very useful for data exchange in Web technology. The main advantage of XML is possibility to create sub languages based on XML. We have a lot of such type of languages now: Scalable Vector Graphics (SVG http://www.w3.org/Graphics/SVG/), Mathematical Markup Language (MathML http://www.w3.org/Math/), The Extensible HyperText Markup Language (XHTML http://www.w3.org/TR/xhtml1/), Resource Description Framework (RDF http://www.w3.org/RDF/), and other. A special language, based on XML, allow to us to use one data format for exchange different type of data. In addition we can develop common software to process all of data.

Fundamentals

For data exchange and data processing was developed special language Meteorological Data description (MeteoXML) based on XML and Application Program Interfaces (XmlMeteoDocument) based on XML DOM model and MeteoXML. MeteoXML includes DataTransmit XML document for hydro meteorological data. XmlMeteoDocument allow parsing, controlling and processing hydro meteorological data.

DataTransmit Document

DataTransmit document has two parts. One part contains definition of all parameters included in document and second part contains hydro meteorological data. Each parameter receives temporally name as string and definition. To define parameter you can use four forms.

The first form allows defining parameter by point table name and column name that contain this data into DBMS. For instance: <ElT TbN="Buoy_Lv" ClN="TEMPWAT"/>, where ElT is pointer on definition of parameter as table of database. TbN - table name. ClN - column name.

The second form allows defining parameter by code. For instance: <ElC Cod="2102"/>, where ElC is pointer on definition of parameter as code from vocabulary, Cod - code of parameter.

The third form allows defining parameter by name of function that produces this parameter. For instance: <ElF FnN="Function_Name"/>, where ElF is pointer on definition of parameter as name of function, FnN - name of function.

The fourth form allows defining complicate parameter by defining the process of calculation.

Instance:

<Elements>
<El TmN="StI"><ElT TbN="Buoy_Lv" ClN="Station_ID"/><ElDis ElN="Station" ElU="Code"/></El>
<El TmN="T"> <ElT TbN="Buoy_Lv" ClN="Date_obs"/> <ElDis ElN="Date" ElU="Date"/></El>
<El TmN="TWT"><ElT TbN="Buoy_Lv" ClN="TEMPWAT"/> <ElDis ElN="Water temp." ElU="Degrees C"/></El>
</Elements>

You can see node Elements that unite element definitions, nodes El that unite one element definition and node ElDis that allow to define name of parameter and units.

All data united in node DataBlock. DataBlock contain Table nodes each for one table. Data node included in DataBlock contain data for one station. The station defined by key values: Station ID, Latitude and Longitude. If station is not mobile Latitude and Longitude can be omit. For the ship observations Station ID is ship code. The next nodes D correspond to measures in some time and on some level. Each hydro meteorological characteristic presented by node P, where N - temporary name, V - value, Q - quality control flag, D - additional definition.

<DataBlock dbI="dbOcean">
<Table TbN="Buoy_Lv">
<Data StI="21533" Lat="36.2" Lon="130.47">
<D T="1999-12-06 22:22:00.0" Lev="0.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.36" Q="0" />
</D>
<D T="1999-12-06 22:22:00.0" Lev="3.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.68" Q="0" />
</D>
</Data>
</Table>
</DataBlock>

The XML Meteo Document and DTD you can see in appendix.

 

Appendix 1

DataTransmit Document

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE DataTransmit SYSTEM "DataTransmit.dtd">
<DataTransmit>
<TransmitDescr>Meteorological Data</TransmitDescr>
<TransData TdN="CDBMS">
<TranDescr>Selected Data from Data Base</TranDescr>
<DateDescr BYObs="1999" EYObs="1999" BDObs="11-01 00:00" EDObs="12-12 23:59" />
<Elements>
<El TmN="StI"><ElT TbN="Buoy_Lv" ClN="Station_ID" /><ElDis ElN="Station" /></El>
<El TmN="T"> <ElT TbN="Buoy_Lv" ClN="Date_obs" /> <ElDis ElN="Date" /></El>
<El TmN="TYPE_OBS"><ElT TbN="Buoy_Lv" ClN="TYPE_OBS" /><ElDis ElN="Type" /></El>
<El TmN="LAT"><ElT TbN="Buoy_Lv" ClN="LAT" /><ElDis ElN="Latitude" /></El>
<El TmN="LON"><ElT TbN="Buoy_Lv" ClN="LON" /><ElDis ElN="Longitude" /></El>
<El TmN="MARS10"><ElT TbN="Buoy_Lv" ClN="MARS10" /><ElDis ElN="Square" /></El>
<El TmN="CENTR"> <ElT TbN="Buoy_Lv" ClN="CENTR" /> <ElDis ElN="Center" /></El>
<El TmN="LEVEL"> <ElT TbN="Buoy_Lv" ClN="LEVDEEP" /><ElDis ElN="Level" /></El>
<El TmN="LEVTYPE"><ElT TbN="Buoy_Lv" ClN="LEVTYPE" /><ElDis ElN="Level type" /></El>
<El TmN="TEMPWAT"><ElT TbN="Buoy_Lv" ClN="TEMPWAT" /><ElDis ElN="Water temp." /></El>
</Elements>
<DataBlock dbI="dbOcean">
<Table TbN="Buoy_Lv">
<Data StI="N21533" Lat="36.2" Lon="130.47">
<D T="1999-12-06 22:22:00.0" Lev="0.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.36" Q="0" />
</D>
<D T="1999-12-06 22:22:00.0" Lev="3.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.68" Q="0" />
</D>
<D T="1999-12-06 22:22:00.0" Lev="10.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.6" Q="0" />
</D>
</Data>
<Data StI="N21533" Lat="36.19" Lon="130.47">
<D T="1999-12-07 00:02:00.0" Lev="0.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.36" Q="0" />
</D>
<D T="1999-12-07 00:02:00.0" Lev="3.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.6" Q="0" />
</D>
<D T="1999-12-07 00:02:00.0" Lev="10.0">
<P N="TYPE_OBS" V="74" />
<P N="MARS10" V="131" />
<P N="CENTR" V="WKARS" />
<P N="LEVTYPE" V="100" />
<P N="TEMPWAT" V="16.6" Q="0" />
</D>
</Data>
</Table>
</DataBlock>
</TransData>
</DataTransmit>

DataTransmit Document DTD

<!-- MeteoXML Language. DTD for DataTransmit of CliWare 2000.01.13 -->
<!-- Root Element -->
<!ELEMENT DataTransmit (TransmitDesc?, Error?, Message?, TransData*)>
<!-- Free format description of Document -->
<!ELEMENT ReqDescr (#PCDATA)>
<!-- Free format error message -->
<!ELEMENT Error (#PCDATA)>
<!-- Free format message -->
<!ELEMENT Message (#PCDATA)>
<!-- Unit of trasmitted data -->
<!ELEMENT TransData (TranDescr?, DateDescr, Elements, DataBlock*)>
<!-- Unique identificator of data -->
<!ATTLIST TransData
TdN ID #REQUIRED>
<!-- Data unit descrpition -->
<!ELEMENT TranDescr (#PCDATA)>
<!-- Description of date period -->
<!ELEMENT DateDescr EMPTY>
<!-- BYObs - Begin year of observation ("YYYY")
EYObs - End year of observation ("YYYY")
BDObs - Begin date of observation into year ("MM-DD HH24:MM")
EDObs - End date of observation into year ("MM-DD HH24:MM")
-->
<!ATTLIST DateDescr
BYObs NMTOKEN #REQUIRED
EYObs NMTOKEN #REQUIRED
BDObs NMTOKEN #REQUIRED
EDObs NMTOKEN #REQUIRED>
<!-- Elements description -->
<!ELEMENT Elements (El+)>
<!-- Element description -->
<!ELEMENT El ((ElT | ElC), ElDis)>
<!-- Temp name of element. Must correspond to some element name in P tag -->
<!ATTLIST El
TmN ID #REQUIRED>
<!-- Direct element definition from table -->
<!ELEMENT ElT EMPTY>
<!-- TbN - Name of table
ClN - Name of column
-->
<!ATTLIST ElT
TbN NMTOKEN #IMPLIED
ClN NMTOKEN #IMPLIED>
<!-- Coded element definition -->
<!ELEMENT ElC EMPTY>
<!-- Cod - Code of the element -->
<!ATTLIST ElC
Cod NMTOKEN #IMPLIED>
<!-- Element description -->
<!ELEMENT ElDis EMPTY>
<!-- ElN - Name of Element
ElU - Units of Element
-->
<!ATTLIST ElDis
ElN CDATA #IMPLIED
ElU CDATA #IMPLIED>
<!-- Block of Data -->
<!ELEMENT DataBlock (Table*)>
<!-- One table data -->
<!ELEMENT Table (Data*)>
<!-- TbN - Name of the table -->
<!ATTLIST Table
TbN ID #REQUIRED>
<!-- One station data -->
<!ELEMENT Data (D*)>
<!-- Sti - Index of station (String)
Lat - Latitude of station (Optional decimal)
Lon - Longitude of station (Optional decimal)
-->
<!ATTLIST Data
StI NMTOKEN #IMPLIED
Lat NMTOKEN #IMPLIED
Lon NMTOKEN #IMPLIED>
<!-- Observation for one time and level -->
<!ELEMENT D (P+)>
<!-- T - Time of observation (YYYY-MM-DD HH24:MM:SS.n)
Lev - Level of observation. Null if omits. (Optional. Decimal)
K - Additional key if need (Optional. String)
-->
<!ATTLIST D
T NMTOKEN #IMPLIED
Lev NMTOKEN #IMPLIED
K NMTOKEN #IMPLIED>
<!-- One element data -->
<!ELEMENT P EMPTY>
<!-- N - Temp name
V - Value (Decimal)
Q - Quality control flag (One character. Optional)
D - Additional descriptor (One character. Optional)
-->
<!ATTLIST D
N NMTOKEN #IMPLIED
V NMTOKEN #IMPLIED
Q NMTOKEN #IMPLIED
D NMTOKEN #IMPLIED>