Esempio n. 1
0
class Person(YAMLRoot):
    """
    Minimal information about a person
    """
    _inherited_slots: ClassVar[List[str]] = []

    class_class_uri: ClassVar[URIRef] = SDO.Person
    class_class_curie: ClassVar[str] = "sdo:Person"
    class_name: ClassVar[str] = "Person"
    class_model_uri: ClassVar[URIRef] = EX.Person

    id: Union[str, PersonId] = None
    first_name: Union[str, List[str]] = None
    last_name: str = None
    knows: Optional[Union[Union[str, PersonId],
                          List[Union[str, PersonId]]]] = empty_list()

    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
        if self._is_empty(self.id):
            raise ValueError("id must be supplied")
        if not isinstance(self.id, PersonId):
            self.id = PersonId(self.id)

        if self._is_empty(self.first_name):
            raise ValueError("first_name must be supplied")
        if not isinstance(self.first_name, list):
            self.first_name = [self.first_name]
        self.first_name = [
            v if isinstance(v, str) else str(v) for v in self.first_name
        ]

        if self._is_empty(self.last_name):
            raise ValueError("last_name must be supplied")
        if not isinstance(self.last_name, str):
            self.last_name = str(self.last_name)

        if not isinstance(self.knows, list):
            self.knows = [self.knows]
        self.knows = [
            v if isinstance(v, PersonId) else PersonId(v) for v in self.knows
        ]

        super().__post_init__(**kwargs)
Esempio n. 2
0
class MappingSet(YAMLRoot):
    """
    Represents a set of mappings
    """
    _inherited_slots: ClassVar[List[str]] = []

    class_class_uri: ClassVar[URIRef] = SSSOM.MappingSet
    class_class_curie: ClassVar[str] = "sssom:MappingSet"
    class_name: ClassVar[str] = "mapping set"
    class_model_uri: ClassVar[URIRef] = SSSOM.MappingSet

    mapping_set_id: Union[str, URI] = None
    license: Union[str, URI] = None
    mappings: Optional[Union[Union[dict, "Mapping"],
                             List[Union[dict, "Mapping"]]]] = empty_list()
    mapping_set_version: Optional[str] = None
    mapping_set_source: Optional[Union[Union[str, EntityReference], List[Union[
        str, EntityReference]]]] = empty_list()
    mapping_set_description: Optional[str] = None
    creator_id: Optional[Union[Union[str, EntityReference],
                               List[Union[str,
                                          EntityReference]]]] = empty_list()
    creator_label: Optional[Union[str, List[str]]] = empty_list()
    subject_source: Optional[Union[str, URI]] = None
    subject_source_version: Optional[str] = None
    object_source: Optional[Union[str, URI]] = None
    object_source_version: Optional[str] = None
    mapping_provider: Optional[Union[str, URI]] = None
    mapping_tool: Optional[str] = None
    mapping_date: Optional[Union[str, XSDDate]] = None
    subject_match_field: Optional[Union[Union[
        str, EntityReference], List[Union[str,
                                          EntityReference]]]] = empty_list()
    object_match_field: Optional[Union[Union[str, EntityReference], List[Union[
        str, EntityReference]]]] = empty_list()
    subject_preprocessing: Optional[
        Union[Union[str, "PreprocessingMethodEnum"],
              List[Union[str, "PreprocessingMethodEnum"]]]] = empty_list()
    object_preprocessing: Optional[
        Union[Union[str, "PreprocessingMethodEnum"],
              List[Union[str, "PreprocessingMethodEnum"]]]] = empty_list()
    match_term_type: Optional[Union[str, "MatchTermTypeEnum"]] = None
    see_also: Optional[Union[str, List[str]]] = empty_list()
    other: Optional[str] = None
    comment: Optional[str] = None

    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
        if self._is_empty(self.mapping_set_id):
            self.MissingRequiredField("mapping_set_id")
        if not isinstance(self.mapping_set_id, URI):
            self.mapping_set_id = URI(self.mapping_set_id)

        if self._is_empty(self.license):
            self.MissingRequiredField("license")
        if not isinstance(self.license, URI):
            self.license = URI(self.license)

        if not isinstance(self.mappings, list):
            self.mappings = [self.mappings
                             ] if self.mappings is not None else []
        self.mappings = [
            v if isinstance(v, Mapping) else Mapping(**as_dict(v))
            for v in self.mappings
        ]

        if self.mapping_set_version is not None and not isinstance(
                self.mapping_set_version, str):
            self.mapping_set_version = str(self.mapping_set_version)

        if not isinstance(self.mapping_set_source, list):
            self.mapping_set_source = [
                self.mapping_set_source
            ] if self.mapping_set_source is not None else []
        self.mapping_set_source = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.mapping_set_source
        ]

        if self.mapping_set_description is not None and not isinstance(
                self.mapping_set_description, str):
            self.mapping_set_description = str(self.mapping_set_description)

        if not isinstance(self.creator_id, list):
            self.creator_id = [self.creator_id
                               ] if self.creator_id is not None else []
        self.creator_id = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.creator_id
        ]

        if not isinstance(self.creator_label, list):
            self.creator_label = [self.creator_label
                                  ] if self.creator_label is not None else []
        self.creator_label = [
            v if isinstance(v, str) else str(v) for v in self.creator_label
        ]

        if self.subject_source is not None and not isinstance(
                self.subject_source, URI):
            self.subject_source = URI(self.subject_source)

        if self.subject_source_version is not None and not isinstance(
                self.subject_source_version, str):
            self.subject_source_version = str(self.subject_source_version)

        if self.object_source is not None and not isinstance(
                self.object_source, URI):
            self.object_source = URI(self.object_source)

        if self.object_source_version is not None and not isinstance(
                self.object_source_version, str):
            self.object_source_version = str(self.object_source_version)

        if self.mapping_provider is not None and not isinstance(
                self.mapping_provider, URI):
            self.mapping_provider = URI(self.mapping_provider)

        if self.mapping_tool is not None and not isinstance(
                self.mapping_tool, str):
            self.mapping_tool = str(self.mapping_tool)

        if self.mapping_date is not None and not isinstance(
                self.mapping_date, XSDDate):
            self.mapping_date = XSDDate(self.mapping_date)

        if not isinstance(self.subject_match_field, list):
            self.subject_match_field = [
                self.subject_match_field
            ] if self.subject_match_field is not None else []
        self.subject_match_field = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.subject_match_field
        ]

        if not isinstance(self.object_match_field, list):
            self.object_match_field = [
                self.object_match_field
            ] if self.object_match_field is not None else []
        self.object_match_field = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.object_match_field
        ]

        if not isinstance(self.subject_preprocessing, list):
            self.subject_preprocessing = [
                self.subject_preprocessing
            ] if self.subject_preprocessing is not None else []
        self.subject_preprocessing = [
            v if isinstance(v, PreprocessingMethodEnum) else
            PreprocessingMethodEnum(v) for v in self.subject_preprocessing
        ]

        if not isinstance(self.object_preprocessing, list):
            self.object_preprocessing = [
                self.object_preprocessing
            ] if self.object_preprocessing is not None else []
        self.object_preprocessing = [
            v if isinstance(v, PreprocessingMethodEnum) else
            PreprocessingMethodEnum(v) for v in self.object_preprocessing
        ]

        if self.match_term_type is not None and not isinstance(
                self.match_term_type, MatchTermTypeEnum):
            self.match_term_type = MatchTermTypeEnum(self.match_term_type)

        if not isinstance(self.see_also, list):
            self.see_also = [self.see_also
                             ] if self.see_also is not None else []
        self.see_also = [
            v if isinstance(v, str) else str(v) for v in self.see_also
        ]

        if self.other is not None and not isinstance(self.other, str):
            self.other = str(self.other)

        if self.comment is not None and not isinstance(self.comment, str):
            self.comment = str(self.comment)

        super().__post_init__(**kwargs)
Esempio n. 3
0
class Mapping(YAMLRoot):
    """
    Represents an individual mapping between a pair of entities
    """
    _inherited_slots: ClassVar[List[str]] = []

    class_class_uri: ClassVar[URIRef] = OWL.Axiom
    class_class_curie: ClassVar[str] = "owl:Axiom"
    class_name: ClassVar[str] = "mapping"
    class_model_uri: ClassVar[URIRef] = SSSOM.Mapping

    subject_id: Union[str, EntityReference] = None
    predicate_id: Union[str, EntityReference] = None
    object_id: Union[str, EntityReference] = None
    match_type: Union[Union[str, "MatchTypeEnum"],
                      List[Union[str, "MatchTypeEnum"]]] = None
    subject_label: Optional[str] = None
    subject_category: Optional[str] = None
    predicate_label: Optional[str] = None
    predicate_modifier: Optional[Union[str, "PredicateModifierEnum"]] = None
    object_label: Optional[str] = None
    object_category: Optional[str] = None
    author_id: Optional[Union[Union[str, EntityReference],
                              List[Union[str,
                                         EntityReference]]]] = empty_list()
    author_label: Optional[Union[str, List[str]]] = empty_list()
    reviewer_id: Optional[Union[Union[str, EntityReference],
                                List[Union[str,
                                           EntityReference]]]] = empty_list()
    reviewer_label: Optional[Union[str, List[str]]] = empty_list()
    creator_id: Optional[Union[Union[str, EntityReference],
                               List[Union[str,
                                          EntityReference]]]] = empty_list()
    creator_label: Optional[Union[str, List[str]]] = empty_list()
    license: Optional[Union[str, URI]] = None
    subject_source: Optional[Union[str, URI]] = None
    subject_source_version: Optional[str] = None
    object_source: Optional[Union[str, URI]] = None
    object_source_version: Optional[str] = None
    mapping_provider: Optional[Union[str, URI]] = None
    mapping_cardinality: Optional[Union[str, "MappingCardinalityEnum"]] = None
    mapping_tool: Optional[str] = None
    mapping_tool_version: Optional[str] = None
    mapping_date: Optional[Union[str, XSDDate]] = None
    confidence: Optional[float] = None
    subject_match_field: Optional[Union[Union[
        str, EntityReference], List[Union[str,
                                          EntityReference]]]] = empty_list()
    object_match_field: Optional[Union[Union[str, EntityReference], List[Union[
        str, EntityReference]]]] = empty_list()
    match_string: Optional[Union[str, List[str]]] = empty_list()
    subject_preprocessing: Optional[
        Union[Union[str, "PreprocessingMethodEnum"],
              List[Union[str, "PreprocessingMethodEnum"]]]] = empty_list()
    object_preprocessing: Optional[
        Union[Union[str, "PreprocessingMethodEnum"],
              List[Union[str, "PreprocessingMethodEnum"]]]] = empty_list()
    match_term_type: Optional[Union[str, "MatchTermTypeEnum"]] = None
    semantic_similarity_score: Optional[float] = None
    semantic_similarity_measure: Optional[str] = None
    see_also: Optional[Union[str, List[str]]] = empty_list()
    other: Optional[str] = None
    comment: Optional[str] = None

    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
        if self._is_empty(self.subject_id):
            self.MissingRequiredField("subject_id")
        if not isinstance(self.subject_id, EntityReference):
            self.subject_id = EntityReference(self.subject_id)

        if self._is_empty(self.predicate_id):
            self.MissingRequiredField("predicate_id")
        if not isinstance(self.predicate_id, EntityReference):
            self.predicate_id = EntityReference(self.predicate_id)

        if self._is_empty(self.object_id):
            self.MissingRequiredField("object_id")
        if not isinstance(self.object_id, EntityReference):
            self.object_id = EntityReference(self.object_id)

        if self._is_empty(self.match_type):
            self.MissingRequiredField("match_type")
        if not isinstance(self.match_type, list):
            self.match_type = [self.match_type
                               ] if self.match_type is not None else []
        self.match_type = [
            v if isinstance(v, MatchTypeEnum) else MatchTypeEnum(v)
            for v in self.match_type
        ]

        if self.subject_label is not None and not isinstance(
                self.subject_label, str):
            self.subject_label = str(self.subject_label)

        if self.subject_category is not None and not isinstance(
                self.subject_category, str):
            self.subject_category = str(self.subject_category)

        if self.predicate_label is not None and not isinstance(
                self.predicate_label, str):
            self.predicate_label = str(self.predicate_label)

        if self.predicate_modifier is not None and not isinstance(
                self.predicate_modifier, PredicateModifierEnum):
            self.predicate_modifier = PredicateModifierEnum(
                self.predicate_modifier)

        if self.object_label is not None and not isinstance(
                self.object_label, str):
            self.object_label = str(self.object_label)

        if self.object_category is not None and not isinstance(
                self.object_category, str):
            self.object_category = str(self.object_category)

        if not isinstance(self.author_id, list):
            self.author_id = [self.author_id
                              ] if self.author_id is not None else []
        self.author_id = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.author_id
        ]

        if not isinstance(self.author_label, list):
            self.author_label = [self.author_label
                                 ] if self.author_label is not None else []
        self.author_label = [
            v if isinstance(v, str) else str(v) for v in self.author_label
        ]

        if not isinstance(self.reviewer_id, list):
            self.reviewer_id = [self.reviewer_id
                                ] if self.reviewer_id is not None else []
        self.reviewer_id = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.reviewer_id
        ]

        if not isinstance(self.reviewer_label, list):
            self.reviewer_label = [
                self.reviewer_label
            ] if self.reviewer_label is not None else []
        self.reviewer_label = [
            v if isinstance(v, str) else str(v) for v in self.reviewer_label
        ]

        if not isinstance(self.creator_id, list):
            self.creator_id = [self.creator_id
                               ] if self.creator_id is not None else []
        self.creator_id = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.creator_id
        ]

        if not isinstance(self.creator_label, list):
            self.creator_label = [self.creator_label
                                  ] if self.creator_label is not None else []
        self.creator_label = [
            v if isinstance(v, str) else str(v) for v in self.creator_label
        ]

        if self.license is not None and not isinstance(self.license, URI):
            self.license = URI(self.license)

        if self.subject_source is not None and not isinstance(
                self.subject_source, URI):
            self.subject_source = URI(self.subject_source)

        if self.subject_source_version is not None and not isinstance(
                self.subject_source_version, str):
            self.subject_source_version = str(self.subject_source_version)

        if self.object_source is not None and not isinstance(
                self.object_source, URI):
            self.object_source = URI(self.object_source)

        if self.object_source_version is not None and not isinstance(
                self.object_source_version, str):
            self.object_source_version = str(self.object_source_version)

        if self.mapping_provider is not None and not isinstance(
                self.mapping_provider, URI):
            self.mapping_provider = URI(self.mapping_provider)

        if self.mapping_cardinality is not None and not isinstance(
                self.mapping_cardinality, MappingCardinalityEnum):
            self.mapping_cardinality = MappingCardinalityEnum(
                self.mapping_cardinality)

        if self.mapping_tool is not None and not isinstance(
                self.mapping_tool, str):
            self.mapping_tool = str(self.mapping_tool)

        if self.mapping_tool_version is not None and not isinstance(
                self.mapping_tool_version, str):
            self.mapping_tool_version = str(self.mapping_tool_version)

        if self.mapping_date is not None and not isinstance(
                self.mapping_date, XSDDate):
            self.mapping_date = XSDDate(self.mapping_date)

        if self.confidence is not None and not isinstance(
                self.confidence, float):
            self.confidence = float(self.confidence)

        if not isinstance(self.subject_match_field, list):
            self.subject_match_field = [
                self.subject_match_field
            ] if self.subject_match_field is not None else []
        self.subject_match_field = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.subject_match_field
        ]

        if not isinstance(self.object_match_field, list):
            self.object_match_field = [
                self.object_match_field
            ] if self.object_match_field is not None else []
        self.object_match_field = [
            v if isinstance(v, EntityReference) else EntityReference(v)
            for v in self.object_match_field
        ]

        if not isinstance(self.match_string, list):
            self.match_string = [self.match_string
                                 ] if self.match_string is not None else []
        self.match_string = [
            v if isinstance(v, str) else str(v) for v in self.match_string
        ]

        if not isinstance(self.subject_preprocessing, list):
            self.subject_preprocessing = [
                self.subject_preprocessing
            ] if self.subject_preprocessing is not None else []
        self.subject_preprocessing = [
            v if isinstance(v, PreprocessingMethodEnum) else
            PreprocessingMethodEnum(v) for v in self.subject_preprocessing
        ]

        if not isinstance(self.object_preprocessing, list):
            self.object_preprocessing = [
                self.object_preprocessing
            ] if self.object_preprocessing is not None else []
        self.object_preprocessing = [
            v if isinstance(v, PreprocessingMethodEnum) else
            PreprocessingMethodEnum(v) for v in self.object_preprocessing
        ]

        if self.match_term_type is not None and not isinstance(
                self.match_term_type, MatchTermTypeEnum):
            self.match_term_type = MatchTermTypeEnum(self.match_term_type)

        if self.semantic_similarity_score is not None and not isinstance(
                self.semantic_similarity_score, float):
            self.semantic_similarity_score = float(
                self.semantic_similarity_score)

        if self.semantic_similarity_measure is not None and not isinstance(
                self.semantic_similarity_measure, str):
            self.semantic_similarity_measure = str(
                self.semantic_similarity_measure)

        if not isinstance(self.see_also, list):
            self.see_also = [self.see_also
                             ] if self.see_also is not None else []
        self.see_also = [
            v if isinstance(v, str) else str(v) for v in self.see_also
        ]

        if self.other is not None and not isinstance(self.other, str):
            self.other = str(self.other)

        if self.comment is not None and not isinstance(self.comment, str):
            self.comment = str(self.comment)

        super().__post_init__(**kwargs)
Esempio n. 4
0
class Clique(YAMLRoot):
    """
    A clique
    """

    _inherited_slots: ClassVar[List[str]] = []

    class_class_uri: ClassVar[URIRef] = SSSOM.CS.Clique
    class_class_curie: ClassVar[str] = "sssom.cs:Clique"
    class_name: ClassVar[str] = "clique"
    class_model_uri: ClassVar[URIRef] = SSSOM.CS.Clique

    id: Union[str, CliqueId] = None
    members: Optional[Union[str, List[str]]] = empty_list()
    members_labels: Optional[Union[str, List[str]]] = empty_list()
    num_members: Optional[int] = None
    max_confidence: Optional[float] = None
    min_confidence: Optional[float] = None
    avg_confidence: Optional[float] = None
    is_conflated: Optional[Union[bool, Bool]] = None
    is_all_conflated: Optional[Union[bool, Bool]] = None
    total_conflated: Optional[int] = None
    proportion_conflated: Optional[float] = None
    conflation_score: Optional[float] = None
    members_count: Optional[int] = None
    min_count_by_source: Optional[int] = None
    max_count_by_source: Optional[int] = None
    avg_count_by_source: Optional[float] = None
    harmonic_mean_count_by_source: Optional[float] = None

    def __post_init__(self, *_: List[str], **kwargs: Dict[str, Any]):
        if self._is_empty(self.id):
            self.MissingRequiredField("id")
        if not isinstance(self.id, CliqueId):
            self.id = CliqueId(self.id)

        if not isinstance(self.members, list):
            self.members = [self.members] if self.members is not None else []
        self.members = [
            v if isinstance(v, str) else str(v) for v in self.members
        ]

        if not isinstance(self.members_labels, list):
            self.members_labels = ([self.members_labels]
                                   if self.members_labels is not None else [])
        self.members_labels = [
            v if isinstance(v, str) else str(v) for v in self.members_labels
        ]

        if self.num_members is not None and not isinstance(
                self.num_members, int):
            self.num_members = int(self.num_members)

        if self.max_confidence is not None and not isinstance(
                self.max_confidence, float):
            self.max_confidence = float(self.max_confidence)

        if self.min_confidence is not None and not isinstance(
                self.min_confidence, float):
            self.min_confidence = float(self.min_confidence)

        if self.avg_confidence is not None and not isinstance(
                self.avg_confidence, float):
            self.avg_confidence = float(self.avg_confidence)

        if self.is_conflated is not None and not isinstance(
                self.is_conflated, Bool):
            self.is_conflated = Bool(self.is_conflated)

        if self.is_all_conflated is not None and not isinstance(
                self.is_all_conflated, Bool):
            self.is_all_conflated = Bool(self.is_all_conflated)

        if self.total_conflated is not None and not isinstance(
                self.total_conflated, int):
            self.total_conflated = int(self.total_conflated)

        if self.proportion_conflated is not None and not isinstance(
                self.proportion_conflated, float):
            self.proportion_conflated = float(self.proportion_conflated)

        if self.conflation_score is not None and not isinstance(
                self.conflation_score, float):
            self.conflation_score = float(self.conflation_score)

        if self.members_count is not None and not isinstance(
                self.members_count, int):
            self.members_count = int(self.members_count)

        if self.min_count_by_source is not None and not isinstance(
                self.min_count_by_source, int):
            self.min_count_by_source = int(self.min_count_by_source)

        if self.max_count_by_source is not None and not isinstance(
                self.max_count_by_source, int):
            self.max_count_by_source = int(self.max_count_by_source)

        if self.avg_count_by_source is not None and not isinstance(
                self.avg_count_by_source, float):
            self.avg_count_by_source = float(self.avg_count_by_source)

        if self.harmonic_mean_count_by_source is not None and not isinstance(
                self.harmonic_mean_count_by_source, float):
            self.harmonic_mean_count_by_source = float(
                self.harmonic_mean_count_by_source)

        super().__post_init__(**kwargs)