Sometimes ISO 19139 uses GML fragments to describe complex structure. But
it is too simply documented for novice to understand how to write it. I'm a
novice too, but unfortunately had to develop a guideline.....
One of the most often-used GML in 19139 should be temporal reference in
extent information. The simplest one should be an instance (single point on
a time axis):
<gmd:EX_TemporalExtent id="time_instance">
<gmd:extent>
<gml:TimeInstant gml:id="instant">
<gml:timePosition>1992-01-01T00:00:00Z</gml:timePosition>
</gml:TimeInstant>
</gmd:extent>
</gmd:EX_TemporalExtent>
</gmd:temporalElement>
Second most useful should be a time range:
<gmd:temporalElement>
<gmd:EX_TemporalExtent id="boundingTemporalExtent">
<gmd:extent>
<gml:TimePeriod gml:id="validTimeRange">
<gml:beginPosition>1992-01-01T00:00:00Z</gml:beginPosition>
<gml:endPosition>2007-12-31T00:00:00Z</gml:endPosition>
</gml:TimePeriod>
</gmd:extent>
</gmd:EX_TemporalExtent>
</gmd:temporalElement>
Really easy, isn't it?
The time in timePosition/beginPosition/endPosition can be one of:
- xs:date
- xs:gYearMonth
- xs:gYear
- xs:time
- xs:dateTime
- xs:anyURI
- xs:decimal
Decimal is intended for numeric time, for example GPS time in seconds. URI
is intended for indicating commonly-shared era, which I don't know how to
use.
<gml:endPosition
frame="tag:toyoda.eizi@gmail.com:2011-02-12:mytime_in_seconds">23131231231.1231</gml:endPosition>
But I believe it is more explicit to use gml:timeInterval.
<gml:TimePeriod gml:id="validTimeRange3">
<gml:beginPosition>1992-01-01T00:00:00Z</gml:beginPosition>
<gml:end/>
<gml:timeInterval unit="second">32.75232143</gml:timeInterval>
</gml:TimePeriod>
Complex calendar duration in ISO format can be shown in gml:duration.
<gml:TimePeriod gml:id="validTimeRange4">
<gml:beginPosition>1992-01-01T00:00:00Z</gml:beginPosition>
<gml:end/>
<gml:duration>P2Y2M3D</gml:duration>
</gml:TimePeriod>
The 2nd example can be verbose. I don't know benefit of this form, except
each of "begin" and "end" has id attribute.
<gmd:temporalElement>
<gmd:EX_TemporalExtent id="boundingTemporalExtent">
<gmd:extent>
<gml:TimePeriod gml:id="validTimeRange">
<gml:begin>
<gml:TimeInstant gml:id="begdate">
<gml:timePosition>1992-01-01T00:00:00Z</gml:timePosition>
</gml:TimeInstant>
</gml:begin>
<gml:end>
<gml:TimeInstant gml:id="enddate">
<gml:timePosition>2007-12-31T00:00:00Z</gml:timePosition>
</gml:TimeInstant>
</gml:end>
</gml:TimePeriod>
</gmd:extent>
</gmd:EX_TemporalExtent>
</gmd:temporalElement>