1"""WP44 ontology — the 8 top-level areas.23Each leaf category (defined in the area_*.py modules) names exactly one of4these area ids in its `area` field; build_ontology.py derives `leaves` lists.5"""67AREAS = [8 ("ai_ml", "Artificial Intelligence and Machine Learning",9 "Learning systems and their theory: large language and foundation models, multimodal and generative "10 "models, agents, reinforcement learning, learning theory, neural architectures, and AI safety."),11 ("perception_interaction", "Perception, Language, Robotics and Interaction",12 "Systems that sense, communicate and act in the physical and human world: vision, natural language, "13 "speech and audio, robotics, human-computer interaction, and computer graphics."),14 ("software_pl", "Software, Programming Languages and Formal Methods",15 "How software is built, expressed, translated and proved correct: software engineering, programming "16 "languages, compilers, and formal verification."),17 ("theory", "Theory of Computation",18 "Algorithms, data structures and the limits of efficient computation."),19 ("data_distributed", "Data, Information and Distributed Systems",20 "Storing, retrieving and processing data at scale: databases, information retrieval, distributed, "21 "cloud and edge computing, and computer networks."),22 ("security_privacy", "Security, Privacy and Trust",23 "Protecting systems, data and users: cybersecurity, applied cryptography, blockchain systems, "24 "privacy-preserving computation, and federated learning."),25 ("hardware_emerging", "Hardware, Architecture and Emerging Computing",26 "Physical substrates of computation: computer architecture, AI accelerators, operating systems, "27 "quantum computing, and sustainable computing."),28 ("computational_science", "Computational Science and Discovery",29 "Computing as an instrument of science: scientific computing, computational biology, and autonomous "30 "scientific discovery."),31]3233# Signal-type identifiers used by the assignment rule (see build_ontology.py).34SIGNAL_TYPES = ["openalex_topics", "openalex_subfields", "arxiv_categories", "dblp_streams", "keywords"]3536# arXiv categories admitted in the mapping (brief, input list).37ARXIV_CATEGORIES = set("""cs.AI cs.AR cs.CC cs.CE cs.CG cs.CL cs.CR cs.CV cs.CY cs.DB cs.DC cs.DL cs.DM cs.DS cs.ET38cs.FL cs.GL cs.GR cs.GT cs.HC cs.IR cs.IT cs.LG cs.LO cs.MA cs.MM cs.MS cs.NA cs.NE cs.NI cs.OH cs.OS cs.PF cs.PL39cs.RO cs.SC cs.SD cs.SE cs.SI cs.SY stat.ML eess.AS eess.IV eess.SP eess.SY quant-ph math.OC math.IT math.ST40q-bio.QM q-bio.GN physics.comp-ph""".split())41