

def create_association(self, subject=None, predicate=None, object=None, assoc_type=None):
    '\n        Create an association between two IonObjects with a given predicate\n        @param assoc_type  DEPRECATED\n        '
    if (not (subject and predicate and object)):
        raise BadRequest('Association must have all elements set')
    if (type(subject) is str):
        subject_id = subject
        subject = self.read(subject_id)
        subject_type = subject.type_
    else:
        if ('_id' not in subject):
            raise BadRequest('Subject id not available')
        subject_id = subject._id
        subject_type = subject.type_
    if (type(object) is str):
        object_id = object
        object = self.read(object_id)
        object_type = object.type_
    else:
        if ('_id' not in object):
            raise BadRequest('Object id not available')
        object_id = object._id
        object_type = object.type_
    try:
        pt = Predicates.get(predicate)
    except AttributeError:
        raise BadRequest(('Predicate unknown %s' % predicate))
    if (not (subject_type in pt['domain'])):
        found_st = False
        for domt in pt['domain']:
            if (subject_type in getextends(domt)):
                found_st = True
                break
        if (not found_ot):
            raise BadRequest(('Illegal subject type %s for predicate %s' % (subject_type, predicate)))
    if (not (object_type in pt['range'])):
        found_ot = False
        for rant in pt['range']:
            if (object_type in getextends(rant)):
                found_ot = True
                break
        if (not found_ot):
            raise BadRequest(('Illegal object type %s for predicate %s' % (object_type, predicate)))
    assoc_list = self.find_associations(subject_id, predicate, object_id, id_only=False)
    if (len(assoc_list) != 0):
        assoc = assoc_list[0]
        raise BadRequest(('Association between %s and %s with predicate %s already exists' % (subject_id, object_id, predicate)))
    assoc = IonObject('Association', s=subject_id, st=subject_type, p=predicate, o=object_id, ot=object_type, ts=get_ion_ts())
    return self.rr_store.create(assoc, create_unique_association_id())

dataset/ETHPy150Open ooici/pyon/pyon/ion/resregistry.py ResourceRegistry.create_association/VarMisuse@263/409 `found_st`->`found_ot`