Source code for kgdata.wikidata.models.wdclass

from dataclasses import dataclass
from typing import List, Set
from kgdata.wikidata.models.wdentity import WDEntity


from kgdata.wikidata.models.multilingual import (
    MultiLingualString,
    MultiLingualStringList,
)


[docs]@dataclass class WDClass: __slots__ = ( "id", "label", "description", "aliases", "parents", "properties", "different_froms", "equivalent_classes", "ancestors", ) id: str label: MultiLingualString description: MultiLingualString aliases: MultiLingualStringList parents: List[str] # properties of a type, "P1963" properties: List[str] different_froms: List[str] equivalent_classes: List[str] ancestors: Set[str]
[docs] @staticmethod def from_dict(o): o["label"] = MultiLingualString(**o["label"]) o["description"] = MultiLingualString(**o["description"]) o["aliases"] = MultiLingualStringList(**o["aliases"]) o["ancestors"] = set(o["ancestors"]) return WDClass(**o)
[docs] def to_dict(self): return { "id": self.id, "label": self.label.to_dict(), "description": self.description.to_dict(), "aliases": self.aliases.to_dict(), "parents": self.parents, "properties": self.properties, "different_froms": self.different_froms, "equivalent_classes": self.equivalent_classes, "ancestors": list(self.ancestors), }
[docs] @staticmethod def from_entity(ent: WDEntity): assert ent.datatype is None parents = [] for stmt in ent.props.get("P279", []): assert stmt.value.is_entity_id(stmt.value) parents.append(stmt.value.as_entity_id()) properties = [] for stmt in ent.props.get("P1963", []): assert stmt.value.is_entity_id(stmt.value) properties.append(stmt.value.as_entity_id()) different_froms = [] for stmt in ent.props.get("P1889", []): assert stmt.value.is_entity_id(stmt.value) different_froms.append(stmt.value.as_entity_id()) equivalent_classes = [] for stmt in ent.props.get("P1709", []): assert stmt.value.is_string(stmt.value) equivalent_classes.append(stmt.value.as_string()) return WDClass( id=ent.id, label=ent.label, description=ent.description, aliases=ent.aliases, parents=sorted(parents), properties=sorted(properties), different_froms=sorted(different_froms), equivalent_classes=sorted(equivalent_classes), ancestors=set(), )