def i_memberOf(ss: Substrate, crorwc: crOrWildCard) -> Sctids_or_Error:
    # TODO -- this function executes queries - need to redo ?
    refsetids = ss.i_conceptReference(crorwc.cr) if crorwc.inran('cr') else \
        Sctids_or_Error(ok=ss.descendants(refset_concept))
    if refsetids.inran('error'):
        return refsetids
    refsets = result_sctids(refsetids)
    refset_members = [ss.i_refsetId(sctid) for sctid in refsets]
    rval = refset_members[0] if refset_members else Sctids_or_Error(ok=ss.equivalent_concepts(None))
    for m in refset_members[1:]:
        rval = rval.union(m)
    return rval
Ejemplo n.º 2
0
def i_groupAttribute(ss: Substrate, att: attribute) -> sctIdGroups_or_Error:
    att_sctids = i_attributeOperator(ss, att.attrOper, ss.i_attributeName(att.name))
    if att_sctids.inran('error'):
        return sctIdGroups_or_Error(gerror=att_sctids.error)
    elif att.opValue.inran('attrib_expr'):
        expr_interp = i_expressionComparisonOperator(ss, att.rf, result_sctids(att_sctids), att.opValue.attrib_expr)
        return i_att_group_cardinality(ss, att.card, expr_interp)
    elif att.opValue.inran('attrib_num'):
        num_interp = i_numericComparsionOperator(ss, att.rf, result_sctids(att_sctids), att.opValue.attrib_num)
        return i_att_group_cardinality(ss, att.card, num_interp)
    else:
        str_interp = i_stringComparisonOperator(ss, att.rf, result_sctids(att_sctids), att.opValue.attrib_str)
        return i_att_group_cardinality(ss, att.card, str_interp)
Ejemplo n.º 3
0
def i_attribute(ss: Substrate, att: attribute) -> Sctids_or_Error:
    att_sctids = i_attributeOperator(ss, att.attrOper, ss.i_attributeName(att.name))
    return att_sctids if att_sctids.inran('error') else \
        i_att_cardinality(ss, att.card, i_expressionComparisonOperator(ss,
                                                                       att.rf,
                                                                       result_sctids(att_sctids),
                                                                       att.opValue.attrib_expr)) if \
            att.opValue.inran('attrib_expr') else \
        i_att_cardinality(ss, att.card, i_numericComparsionOperator(ss,
                                                                    att.rf,
                                                                    result_sctids(att_sctids),
                                                                    att.opValue.attrib_num)) if \
            att.opValue.inran('attrib_num') else \
        i_att_cardinality(ss, att.card, i_stringComparisonOperator(ss,
                                                                   att.rf,
                                                                   result_sctids(att_sctids),
                                                                   att.opValue.attrib_str))
def i_focusConcept(ss: Substrate, fc: focusConcept) -> Sctids_or_Error:
    return ss.i_conceptReference(fc.focusConcept_c.cr) if fc.inran('focusConcept_c') and fc.focusConcept_c.inran('cr') else \
           Sctids_or_Error(ok=ss.concepts) if fc.inran('focusConcept_c') and fc.focusConcept_c.inran('wc') else \
           i_memberOf(ss, fc.focusConcept_m)