3. 知识图谱模式设计
知识图谱模式(Schema)是图谱的“骨架”与“契约”。在药物重定位场景中,模式设计决定了后续能问出什么问题、能推理出什么新关联。如果模式过于松散,图谱会退化为一张巨大的三元组表,难以支撑“某老药是否可能治疗新适应症”这类结构化查询;如果模式过于僵硬,又会丢失药物重定位最依赖的跨域联想能力。本节围绕药物、靶点、疾病、通路、副作用等核心实体类型及其关系,讨论如何设计一个既能表达机制、又能支撑推理的本体与模式。
一、先明确实体类型:药物重定位的“名词表”
实体类型(Entity Type / Class)是模式的第一层。面向药物重定位,至少需要以下核心类:
- Drug(药物):包括已上市药物、临床试验阶段药物、化合物。关键属性如 DrugBank ID、ChEMBL ID、通用名、SMILES、最大临床剂量、给药途径。
- Target(靶点):主要是蛋白质,也可包括基因、RNA、离子通道。关键属性如 UniProt ID、基因符号、蛋白家族。
- Disease(疾病):包括疾病本体中的标准术语,如 OMIM、DOID、ICD-10 编码。关键属性如疾病名称、分类、遗传关联。
- Pathway(通路):如 Reactome、KEGG 通路。关键属性如通路 ID、通路名称、所属细胞过程。
- SideEffect(副作用):如 MedDRA 术语、UMLS 编码。关键属性如副作用名称、严重程度、发生频率。
此外,根据重定位策略,还可扩展 Gene(基因)、ProteinComplex(蛋白复合物)、ClinicalTrial(临床试验)、Literature(文献) 等类。实体类型的选择应遵循“最小可用集”原则:先覆盖药物—靶点—疾病—通路—副作用这条主链,再按需扩展。
二、定义关系类型:让实体之间“说话”
关系(Relation / Property)是模式的第二层,也是重定位推理的关键。常见关系包括:
- Drug–Target:binds / inhibits / activates / modulates。这是药物作用机制的核心边。例如“二甲双胍 —activates→ AMPK”。
- Drug–Disease:treats / contraindicated_for / off_label_use。这是重定位的“已知答案”边,用于训练和验证。
- Target–Disease:associated_with / causative_for / risk_factor。这是从靶点推断疾病关联的桥梁。
- Drug–SideEffect:causes / has_adverse_event。副作用常被用作重定位信号,例如某药的副作用提示其可能作用于新靶点。
- Target–Pathway:participates_in / regulates。通路是连接靶点与疾病表型的中层结构。
- Pathway–Disease:dysregulated_in / involved_in。通路异常与疾病发生密切相关。
- Drug–Drug:interacts_with / synergizes_with / antagonizes。用于组合重定位或药物相互作用分析。
关系设计要区分方向性与对称性。例如“binds”通常无方向,但“inhibits”有方向;“interacts_with”可视为对称关系。方向定义一旦确定,全文与图谱存储必须保持一致,否则推理路径会出错。
三、模式设计中的约束与推理规则
仅有实体和关系还不够,模式还需要约束(Constraint)和推理规则(Rule)。约束用于保证数据质量,例如:Drug 的 SMILES 必须唯一;Target 的 UniProt ID 必须符合正则格式;Disease 必须来自 DOID 或 OMIM 本体。推理规则用于从已有边推导新边,例如:
规则1:若 Drug A binds Target T,且 Target T associated_with Disease D,
则推测 Drug A may_treat Disease D(置信度需结合证据强度)。
规则2:若 Drug A causes SideEffect S,且 SideEffect S 与 Target T 相关,
则推测 Drug A 可能作用于 Target T(副作用反向映射)。
规则3:若 Drug A treats Disease D1,且 Disease D1 shares_pathway_with Disease D2,
则推测 Drug A 可能对 Disease D2 有效(通路介导的重定位)。
这些规则不是绝对真理,而是产生候选假设的“生成器”。在模式中,应把规则产生的边标记为 inferred 或 hypothesis,与人工审核的 asserted 边区分开,便于后续证据追溯。
四、用 SVG 展示模式的核心结构
下图给出面向药物重定位的核心模式:实体类型、主要关系及推理方向。图中实线表示直接证据边,虚线表示可推理边,箭头表示关系方向。
五、模式落地:从本体到图谱存储
设计好的模式需要落地为可执行的图谱结构。常见做法是采用 RDF/OWL 或属性图(Property Graph)。以属性图为例,节点标签对应实体类型,边类型对应关系,属性挂在节点或边上。例如:
// 节点示例
(:Drug {drugbank_id: "DB00331", name: "Metformin", smiles: "CN(C)C(=N)N=C(N)N"})
(:Target {uniprot_id: "Q13131", gene: "PRKAA1", name: "AMPK alpha-1"})
(:Disease {doid: "DOID:9352", name: "type 2 diabetes mellitus"})
// 边示例
(:Drug)-[:BINDS {affinity: "IC50=10uM", source: "ChEMBL"}]->(:Target)
(:Target)-[:ASSOCIATED_WITH {score: 0.87, source: "DisGeNET"}]->(:Disease)
(:Drug)-[:MAY_TREAT {confidence: 0.72, inferred: true}]->(:Disease)
在存储时,建议为每条边保留 source、confidence、inferred 三个元属性。这样,当图谱用于重定位假设生成时,可以按置信度排序,并快速回溯证据来源。
六、模式设计的常见陷阱
- 实体粒度不一致:把“基因”和“蛋白质”混为一谈,导致同一靶点出现多个节点。应在模式中明确 Target 以 UniProt 为准,Gene 单独建类并用
encodes关系连接。 - 关系语义过载:用同一个
associated_with表示药物—靶点、靶点—疾病、疾病—通路,导致推理时无法区分。应按语义拆分关系类型。 - 忽略否定证据:只记录“有效”边,不记录“无效”或“矛盾”边。重定位中,阴性结果同样重要,应支持
contradicts或negative_evidence关系。 - 缺少版本管理:本体和模式会随知识更新而演化,应记录模式版本,避免旧数据与新规则冲突。
总结来说,面向药物重定位的本体与模式设计,核心是围绕“药物—靶点—疾病—通路—副作用”这条主链,明确实体类型、关系方向、约束条件和推理规则,并在存储层保留证据与置信度元数据。一个好的模式,能让图谱既表达已知机制,又能生成可验证的新假设,为后续的链接预测、路径推理和候选药物排序打下坚实基础。