code: def primitive_datatype_nostring(self, t: URIRef, v: Optional[str] = None) -> Optional[URIRef]:
          
          vt = self.primitive_datatype(t)
          if self.fhir_dates and vt == XSD.dateTime and v:
              return XSD.gYear if len(v) == 4 else XSD.gYearMonth if len(v) == 7 \
                  else XSD.date if (len(v) == 10 or (len(v) > 10 and v[10] in '+-')) else XSD.dateTime
          # For some reason the oid datatype is represented as a string as well
          if self.fhir_oids and vt == XSD.anyURI:
              vt = None
          return None if vt == XSD.string else vt
docs: Return the data type for primitive type t, if any, defaulting string to no type
          :param t: type
          :param v: value - for munging dates if we're doing FHIR official output
          :return: corresponding data type