code: def _makePositionId(self, reference, coordinate, types=None):
          
  
          if reference is None:
              LOG.error("Trying to make position with no reference.")
              return None
  
          curie = '_:'
          reference = re.sub(r'\w+\:', '', reference, 1)
          if re.match(r'^_', reference):
              # this is in the case if the reference is a bnode
              reference = re.sub(r'^_', '', reference)
          curie += reference
          if coordinate is not None:
              # just in case it isn't a string already
              curie = '-'.join((curie, str(coordinate)))
          if types is not None:
              tstring = self._getStrandStringFromPositionTypes(types)
              if tstring is not None:
                  curie = '-'.join((curie, tstring))
  
          return curie
docs: Note that positions should have a reference (we will enforce).
          Only exact positions need a coordinate.
          :param reference:
          :param coordinate:
          :param types:
          :return: