Skip to content

Topics

Topics are descriptive qualifiers for entities. They can be used to say things like this Company is a bank, or this Person is a politician, or this Position is a political office on a sub-national level of government.

Some topics imply a risk association of an entity (eg. sanction, wanted, crime.war), while others act as a purely descriptive taxonomy of the business and geopolitical world.

Besides the informative value, topics are ultimately supposed to bear fruits in the context of graph-based data analysis, where they would enable queries such as find all paths between a government procurement award and a politician.

Attribute Value Detail
name topic Used in schema definitions
label Topic plural: Topics
group topics Used in search indexing to query all properties of a given type
matchable Suitable for use in entity matching
pivot Suitable for use as a pivot point for connecting to other entities

Data reference

Code Label
crime Crime
crime.fraud Fraud
crime.cyber Cybercrime
crime.fin Financial crime
crime.env Environmental violations
crime.theft Theft
crime.war War crimes
crime.boss Criminal leadership
crime.terror Terrorism
crime.traffick Trafficking
crime.traffick.drug Drug trafficking
crime.traffick.human Human trafficking
forced.labor Forced labor
asset.frozen Frozen asset
wanted Wanted
corp.offshore Offshore
corp.shell Shell company
corp.public Public listed company
corp.disqual Disqualified
gov Government
gov.national National government
gov.state State government
gov.muni Municipal government
gov.soe State-owned enterprise
gov.igo Intergovernmental organization
gov.head Head of government or state
gov.admin Civil service
gov.executive Executive branch of government
gov.legislative Legislative branch of government
gov.judicial Judicial branch of government
gov.security Security services
gov.financial Central banking and financial integrity
fin Financial services
fin.bank Bank
fin.fund Fund
fin.adivsor Financial advisor
reg.action Regulator action
reg.warn Regulator warning
role.pep Politician
role.pol Non-PEP
role.rca Close Associate
role.judge Judge
role.civil Civil servant
role.diplo Diplomat
role.lawyer Lawyer
role.acct Accountant
role.spy Spy
role.oligarch Oligarch
role.journo Journalist
role.act Activist
role.lobby Lobbyist
pol.party Political party
pol.union Union
rel Religion
mil Military
sanction Sanctioned entity
sanction.linked Sanction-linked entity
sanction.counter Counter-sanctioned entity
export.control Export controlled
export.risk Trade risk
debarment Debarred entity
poi Person of interest

followthemoney.types.TopicType

Bases: EnumType

Topics define a controlled vocabulary of terms applicable to some entities, such as companies and people. They describe categories of journalistic interest which may apply to the given entity, for example if a given person is a criminal or a politician.

Besides the informative value, topics are ultimately supposed to bear fruits in the context of graph-based data analysis, where they would enable queries such as find all paths between a government procurement award and a politician.

Source code in followthemoney/types/topic.py
class TopicType(EnumType):
    """Topics define a controlled vocabulary of terms applicable to some
    entities, such as companies and people. They describe categories of
    journalistic interest which may apply to the given entity, for example
    if a given person is a criminal or a politician.

    Besides the informative value, topics are ultimately supposed to bear
    fruits in the context of graph-based data analysis, where they would
    enable queries such as _find all paths between a government procurement
    award and a politician_."""

    name = const("topic")
    group = const("topics")
    label = _("Topic")
    plural = _("Topics")
    matchable = False
    max_length = 64

    _TOPICS = {
        "crime": _("Crime"),
        "crime.fraud": _("Fraud"),
        "crime.cyber": _("Cybercrime"),
        "crime.fin": _("Financial crime"),
        "crime.env": _("Environmental violations"),
        "crime.theft": _("Theft"),
        "crime.war": _("War crimes"),
        "crime.boss": _("Criminal leadership"),
        "crime.terror": _("Terrorism"),
        "crime.traffick": _("Trafficking"),
        "crime.traffick.drug": _("Drug trafficking"),
        "crime.traffick.human": _("Human trafficking"),
        "forced.labor": _("Forced labor"),
        "asset.frozen": _("Frozen asset"),
        "wanted": _("Wanted"),
        "corp.offshore": _("Offshore"),
        "corp.shell": _("Shell company"),
        "corp.public": _("Public listed company"),
        "corp.disqual": _("Disqualified"),
        "gov": _("Government"),
        "gov.national": _("National government"),
        "gov.state": _("State government"),
        "gov.muni": _("Municipal government"),
        "gov.soe": _("State-owned enterprise"),
        "gov.igo": _("Intergovernmental organization"),
        "gov.head": _("Head of government or state"),
        "gov.admin": _("Civil service"),
        "gov.executive": _("Executive branch of government"),
        "gov.legislative": _("Legislative branch of government"),
        "gov.judicial": _("Judicial branch of government"),
        "gov.security": _("Security services"),
        "gov.financial": _("Central banking and financial integrity"),
        "fin": _("Financial services"),
        "fin.bank": _("Bank"),
        "fin.fund": _("Fund"),
        "fin.adivsor": _("Financial advisor"),
        "reg.action": _("Regulator action"),
        "reg.warn": _("Regulator warning"),
        "role.pep": _("Politician"),
        "role.pol": _("Non-PEP"),
        "role.rca": _("Close Associate"),
        "role.judge": _("Judge"),
        "role.civil": _("Civil servant"),
        "role.diplo": _("Diplomat"),
        "role.lawyer": _("Lawyer"),
        "role.acct": _("Accountant"),
        "role.spy": _("Spy"),
        "role.oligarch": _("Oligarch"),
        "role.journo": _("Journalist"),
        "role.act": _("Activist"),
        "role.lobby": _("Lobbyist"),
        "pol.party": _("Political party"),
        "pol.union": _("Union"),
        "rel": _("Religion"),
        "mil": _("Military"),
        "sanction": _("Sanctioned entity"),
        "sanction.linked": _("Sanction-linked entity"),
        "sanction.counter": _("Counter-sanctioned entity"),
        "export.control": _("Export controlled"),
        "export.risk": _("Trade risk"),
        "debarment": _("Debarred entity"),
        "poi": _("Person of interest"),
    }

    def _locale_names(self, locale: Locale) -> EnumValues:
        return {k: gettext(v) for (k, v) in self._TOPICS.items()}