"""WP44 ontology — the 8 top-level areas. Each leaf category (defined in the area_*.py modules) names exactly one of these area ids in its `area` field; build_ontology.py derives `leaves` lists. """ AREAS = [ ("ai_ml", "Artificial Intelligence and Machine Learning", "Learning systems and their theory: large language and foundation models, multimodal and generative " "models, agents, reinforcement learning, learning theory, neural architectures, and AI safety."), ("perception_interaction", "Perception, Language, Robotics and Interaction", "Systems that sense, communicate and act in the physical and human world: vision, natural language, " "speech and audio, robotics, human-computer interaction, and computer graphics."), ("software_pl", "Software, Programming Languages and Formal Methods", "How software is built, expressed, translated and proved correct: software engineering, programming " "languages, compilers, and formal verification."), ("theory", "Theory of Computation", "Algorithms, data structures and the limits of efficient computation."), ("data_distributed", "Data, Information and Distributed Systems", "Storing, retrieving and processing data at scale: databases, information retrieval, distributed, " "cloud and edge computing, and computer networks."), ("security_privacy", "Security, Privacy and Trust", "Protecting systems, data and users: cybersecurity, applied cryptography, blockchain systems, " "privacy-preserving computation, and federated learning."), ("hardware_emerging", "Hardware, Architecture and Emerging Computing", "Physical substrates of computation: computer architecture, AI accelerators, operating systems, " "quantum computing, and sustainable computing."), ("computational_science", "Computational Science and Discovery", "Computing as an instrument of science: scientific computing, computational biology, and autonomous " "scientific discovery."), ] # Signal-type identifiers used by the assignment rule (see build_ontology.py). SIGNAL_TYPES = ["openalex_topics", "openalex_subfields", "arxiv_categories", "dblp_streams", "keywords"] # arXiv categories admitted in the mapping (brief, input list). ARXIV_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.ET cs.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.PL cs.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.ST q-bio.QM q-bio.GN physics.comp-ph""".split())