2. 药物领域知识建模

药物知识图谱的质量,首先取决于本体设计是否合理。本体不是简单的“实体清单”,而是对领域内概念、属性、关系及其约束的形式化约定。它决定了后续数据如何入库、如何推理、如何被查询。本节围绕三个问题展开:本体设计应遵循哪些原则,药物领域的核心实体与关系如何定义,以及如何复用 DrugBank、MeSH、SNOMED CT、ChEBI 等既有标准并做扩展。

一、本体设计原则

药物领域本体设计通常遵循以下原则。第一是领域覆盖与最小充分性:只纳入当前任务需要的概念,避免把整个医学体系一次性搬入。第二是概念唯一性与无歧义:同一概念只应有一个规范标识,例如“阿司匹林”不应同时以商品名、通用名、化学名各自成为独立实体,而应通过别名属性关联。第三是关系语义明确:targets、treats、metabolized_by 等谓词必须有清晰定义和方向,不能混用。第四是可扩展与可复用:优先复用成熟本体中的类与属性,仅在必要时新增子类或自定义关系。第五是可推理与可验证:本体应支持一致性检查,例如通过定义域和值域约束,避免“药物—药物治疗—疾病”这类错误三元组进入图谱。

本体设计的一个实用判断标准是:如果两个不同工程师对同一份数据建模,得到的实体类型和关系方向应基本一致。若做不到,说明本体定义还不够明确。

二、药物核心实体及其关系定义

药物知识图谱的核心实体通常包括五类:药物(Drug)、靶点(Target)、疾病(Disease)、通路(Pathway)和不良反应(Adverse Event)。它们之间并非孤立,而是通过一组有向关系构成网络。

药物与靶点之间是targets关系,方向为药物指向靶点,可附带作用类型(激动、拮抗、抑制)和亲和力参数。药物与疾病之间是treats或indicated_for关系,方向为药物指向疾病。药物与不良反应之间是causes或has_adverse_event关系,方向为药物指向不良反应。靶点与通路之间是participates_in关系,方向为靶点指向通路。通路与疾病之间是associated_with关系,方向为通路指向疾病。此外,药物与药物之间还存在interacts_with关系,通常为无向或双向,并附带相互作用严重程度。

药物 Drug 靶点 Target 疾病 Disease 通路 Pathway 不良反应 Adverse Event targets treats causes participates_in associated_with interacts_with 关系方向:箭头由主体指向客体;interacts_with 为双向关系,图中以自环示意药物间相互作用。

在定义关系时,需要同时约定关系的属性。例如 targets 关系可携带 action_type(agonist/antagonist/inhibitor)、affinity_value 和 affinity_unit;treats 关系可携带 evidence_level 和 source。这些属性使图谱不仅能回答“是否相关”,还能回答“以何种方式、多强证据相关”。

三、常用本体标准的复用与扩展

药物领域已有多个成熟本体标准,直接复用可以显著降低建模成本并提升互操作性。下表对比了四个常用标准的核心定位与典型用途。

标准 核心定位 典型复用内容 扩展建议
DrugBank 药物与靶点、代谢、相互作用 Drug 类、Target 类、drug-target 关系、ATC 编码 补充中药成分、复方制剂等未覆盖类型
MeSH 医学主题词表,用于文献标引 Disease 类、Chemical 类、树状层级结构 将 MeSH 树号映射为疾病子类层级
SNOMED CT 临床术语与概念体系 Adverse Event 类、临床发现、解剖部位 用其概念 ID 作为不良反应的规范标识
ChEBI 化学实体与生物活性分子 小分子药物、代谢物、化学结构类 与 DrugBank 通过 InChIKey 做实体对齐

复用不是简单照搬,而是“映射—对齐—扩展”三步走。以药物实体为例,可先采用 DrugBank 的 Drug 类作为主类,再通过 sameAs 或 exactMatch 属性关联 ChEBI 的化学实体 ID 和 MeSH 的化学主题词。对于靶点,可复用 DrugBank 的 Target 类,并关联 UniProt 的蛋白质 ID。对于疾病,可复用 MeSH 的疾病树状结构,同时用 SNOMED CT 的概念 ID 补充临床细节。对于不良反应,优先采用 SNOMED CT 或 MedDRA 的概念编码,避免自造词表。

示例:阿司匹林实体的跨标准映射(示例数据,用于说明映射方式)

Drug: Aspirin
  rdf:type          : DrugBank:Drug
  exactMatch        : ChEBI:15365
  exactMatch        : MeSH:D001241
  has_target        : UniProt:P23219  (COX-1)
  has_target        : UniProt:P35354  (COX-2)
  treats            : MeSH:D010146  (Pain)
  causes            : SNOMEDCT:37276002 (Gastrointestinal bleeding)
  atc_code          : N02BA01

扩展时需注意两点。其一,新增子类应挂接到已有父类之下,例如新增“中药复方”作为 Drug 的子类,而不是另起一个顶层类。其二,自定义关系应尽量复用已有谓词的语义,若确实需要新谓词,应给出定义域、值域和与已有谓词的区别说明。例如 has_active_metabolite 与 metabolized_to 方向相反,必须明确区分。

四、建模检查要点

完成本体设计后,建议用以下问题做一次自检:核心实体是否都有唯一标识和别名机制;关系方向是否一致且无歧义;是否优先复用了 DrugBank、MeSH、SNOMED CT、ChEBI 等标准;跨标准映射是否通过 exactMatch 等属性显式声明;是否定义了必要的约束以避免错误三元组。若这些问题都能明确回答,本体就具备了支撑后续知识抽取、融合与推理的基础。