docs: def temporal_from_literal(text):
      '''
      Parse a temporal coverage from a literal ie. either:
      - an ISO date range
      - a single ISO date period (month,year)
      '''
      if text.count('/') == 1:
          # This is an ISO date range as preconized by Gov.uk
          # http://guidance.data.gov.uk/dcat_fields.html
          start, end = text.split('/')
          return db.DateRange(
              start=parse_dt(start).date(),
              end=parse_dt(end).date()
          )
      else:
          separators = text.count('-')
          if separators == 0:
              # this is a year
              return db.DateRange(
                  start=date(int(text), 1, 1),
                  end=date(int(text), 12, 31)
              )
          elif separators == 1:
              # this is a month
              dt = parse_dt(text).date()
              return db.DateRange(
                  start=dt.replace(day=1),
                  end=dt.replace(day=calendar.monthrange(dt.year, dt.month)[1])
              )