EDTF Field

Introduction

In version 21.3 we introduce a new field (definition) type EDTFField whose content corresponds with the metadata standard EDTF specifically for the fully supported levels 0 and 1. Since 23.1, level 2 COMPLETELY_UNSPECIFIED is also supported. The validity of these dates is checked both in front-ends and APIs. Each EDTF date corresponds with an interval, for example 2021-04-XX corresponds to the entire month of April 2021.

Indexation

Each EDTF date corresponds with an interval in time. An EDTF field can be searched as follows

  • By specifying a point in time → +MyDateField:"1985-04-01T00:00:00"

    • Will search for all dates on the April 1st 1985 at midnight

  • By specifying a date range → +MyDateField:[1985-04-01 TO 1986-23]

    • Will search for all dates from April 1st 1985 until the end of Autumn 1986.

  • By specifying an EDTF date → +MyDateField:"2014/2015-06"

    • Will search for all dates from the start of 2014 until the end of June 2015.

  • Literal or textual searches on EDTF dates are not supported

    • e.g. +MyDateField:20*

    • +MyDateField:2014 matches not only with 2014 but also with 2014-XX, 2014-03-25T12:32:15, 2010/2030 etc

Overview

The tables below shows the supported EDTF features. The interval associated with the EDTF date, does not include the end, which technically means it is half open: [Left,Right[

Level 0

Name

Example

Left

Right (open)

Name

Example

Left

Right (open)

DATE_COMPLETE

1985-04-12

1985-04-12T00:00:00

1985-04-13T00:00:00

DATE_PRECISION_YEAR_AND_MONTH

1985-04

1985-04-01T00:00:00

1985-05-01T00:00:00

DATE_PRECISION_YEAR

1985

1985-01-01T00:00:00

1986-01-01T00:00:00

DATETIME_COMPLETE

1985-04-12T23:20:30

1985-04-12T23:20:30

1985-04-12T23:20:31

DATETIME_COMPLETE_UTC

1985-04-12T23:20:30Z

1985-04-12T23:20:30Z

1985-04-12T23:20:31Z

DATETIME_COMPLETE_SHIFT

1985-04-12T23:20:30+04:30

1985-04-12T23:20:30+04:30

1985-04-12T23:20:31+04:30

TIME_INTERVAL

2 DATE_* separated by /

1985-04/1986

1985-04-01T00:00:00

1987-01-01T00:00:00

Level 1

Name

Sub Level

Example

Left

Right (open)

Name

Sub Level

Example

Left

Right (open)

LETTER_PREFIXED_YEAR

 

Y170000002

170000002-01-01T00:00:00

170000003-01-01T00:00:00

SEASONS
The values 21, 22, 23, 24 may be used used to signify Meteorological season

  • Spring: 21 = 01/03 → 01/06

  • Summer: 22 = 01/06 → 01/09

  • Autumn: 23 = 01/09 → 01/12

  • Winter: 24 = 01/12 → 01/03

 

1985-21

1985-03-01T00:00:00

1985-06-01T00:00:00

DATE_QUALIFICATION_UNCERTAIN

DATE_* plus ?

? uncertain

1985-04?

1985-04-01T00:00:00

1985-05-01T00:00:00

DATE_QUALIFICATION_APPROXIMATE
DATE_* plus ?

~ approximate

1985-04~

1985-04-01T00:00:00

1985-05-01T00:00:00

DATE_QUALIFICATION_UNCERTAIN_APPROXIMATE

DATE_* plus ?

% uncertain and approximate

1985-04%

1985-04-01T00:00:00

1985-05-01T00:00:00

UNSPECIFIED_DIGIT_FROM_THE_RIGHT

DECADE

198X

1980-01-01T00:00:00

1990-01-01T00:00:00

UNSPECIFIED_DIGIT_FROM_THE_RIGHT

CENTURY

19XX

1900-01-01T00:00:00

2000-01-01T00:00:00

UNSPECIFIED_DIGIT_FROM_THE_RIGHT

MONTH

1985-XX

1985-01-01T00:00:00

1986-01-01T00:00:00

UNSPECIFIED_DIGIT_FROM_THE_RIGHT

DAY_IN_YEAR

1985-XX-XX

1985-01-01T00:00:00

1986-01-01T00:00:00

UNSPECIFIED_DIGIT_FROM_THE_RIGHT

DAY_IN_MONTH

1985-04-XX

1985-04-01T00:00:00

1985-05-01T00:00:00

EXTENDED_INTERVAL

OPEN_END

1985-04-12/..

1985-04-12T00:00:00

*

EXTENDED_INTERVAL

OPEN_BEGIN

../1985-04-12

*

1985-04-12T00:00:00

EXTENDED_INTERVAL

UNKNOWN_END

1985-04-12/

1985-04-12T00:00:00

*

EXTENDED_INTERVAL

UNKNOWN_BEGIN

/1985-04-12

*

1985-04-12T00:00:00

EXTENDED_INTERVAL with 1 or 2 of the dates being a DATE_QUALIFICATION

 

1985-04%/1986

1985-04-01T00:00:00

1986-01-01T00:00:00

NEGATIVE_CALENDER_YEAR

 

-0750

-0750-01-01T00:00:00

-0749-01-01T00:00:00

Level 2 (future release, >= 23.1)

Name

Sub Level

Example

Left

Right

Name

Sub Level

Example

Left

Right

UNSPECIFIED

EONS

  • XXXX-04

  • X750-03-1X

  • 0001-04-01T00:00:00

  • 0750-03-10T00:00:00

  • 9999-04-01T00:00:00

  • 9750-03-20T00:00:00

UNSPECIFIED

MILLENIUM

  • 1XXX-04

  • 1XXX-08-XX

  • 1000-04-01T00:00:00

  • 1000-08-01T00:00:00

  • 1999-05-01T00:00:00

  • 1999-09-01T00:00:00

UNSPECIFIED

CENTURY

  • 18XX-07

  • 18XX-07-X3

  • 1800-07-01T00:00:00

  • 1800-07-03T00:00:00

  • 1899-08-01T00:00:00

  • 1899-07-24T00:00:00

UNSPECIFIED

DECADE

  • 181X-07

  • 181X-07-X3

  • 1810-07-01T00:00:00

  • 1810-07-03T00:00:00

  • 1819-08-01T00:00:00

  • 1819-07-24T00:00:00

UNSPECIFIED

YEAR

  • 1812-X7

  • 1812-XX-X3

  • 1812-07-01T00:00:00

  • 1812-01-03T00:00:00

  • 1812-08-01T00:00:00

  • 1812-12-24T00:00:00

UNSPECIFIED

SEMESTERS

  • 1812-1X

  • 1812-0X-X3

  • 1812-10-01T00:00:00

  • 1812-01-03T00:00:00

  • 1813-01-01T00:00:00

  • 1812-09-24T00:00:00

UNSPECIFIED

MONTH

  • 1812-02-X2

  • 1812-02-X9

  • 1812-02-01T00:00:00

  • 1812-02-01T00:00:00

  • 1812-03-01T00:00:00

  • 1812-03-01T00:00:00

UNSPECIFIED

SUB_MONTH

  • 1812-02-2X

  • 1812-02-1X

  • 1812-02-20T00:00:00

  • 1812-02-10T00:00:00

  • 1812-03-01T00:00:00

  • 1812-02-20T00:00:00

COMPLETELY_UNSPECIFIED (since 23.1)

 

XXXX-XX-XX

0001-01-01T00:00:00

10000-01-01T00:00:00

Notes

  • For INTERVAL and EXTENDED_INTERNAL the following rule applies START.left <= END.left

  • When no time zone is specified the time zone of the installation is used, which is the Brussels time zone.

  • INTERVAL only allows for DATE_* not for DATETIME_*

  • Note that year must have at least 4 digits, e.g. -750 is not allowed

  • Due to limitations of the underlying search engine, searching on negative years is not possible

  • Indexed searching on a range of intervals, e.g. XXXX-12-XX (every December during 10000 years), is technically not possible, hence the range simplified to the interval determined by the left-most X (e.g. X123 = 10000 years, 1X34 = 1000 years, 15X9 = 100 years, etc).