3.7 KiB
Executable File
3.7 KiB
Executable File
Neo4j 知识图谱 Schema 设计
实体类型 (Nodes)
1. GeneFamily (基因家族)
(:GeneFamily {
name: string, // 基因家族名称,如 "SPL"
full_name: string, // 全称,如 "SQUAMOSA PROMOTER BINDING PROTEIN-LIKE"
description: string, // 描述
pfam_ids: [string], // 相关Pfam ID
interpro_ids: [string] // 相关InterPro ID
})
2. Gene (基因)
(:Gene {
id: string, // 基因ID,如 "FtSPL1"
name: string, // 基因名称
species: string, // 物种
chromosome: string, // 染色体位置
start: int, // 起始位置
end: int, // 终止位置
strand: string, // 正负链
sequence: string // 序列(可选)
})
3. Species (物种)
(:Species {
name: string, // 物种名,如 "Solanum lycopersicum"
common_name: string, // 常用名,如 "Tomato"
taxonomy_id: string // NCBI Taxonomy ID
})
4. PhylogenyGroup (系统发育分组)
(:PhylogenyGroup {
name: string, // 分组名,如 "Group_I"
gene_family: string, // 所属基因家族
description: string // 分组描述
})
5. Domain (蛋白结构域)
(:Domain {
name: string, // 结构域名,如 "SBP"
pfam_id: string, // Pfam ID
description: string // 描述
})
6. Motif (Motif)
(:Motif {
id: string, // Motif ID
name: string, // Motif名称
pattern: string // 序列模式
})
7. Publication (文献)
(:Publication {
doi: string, // DOI
pmid: string, // PubMed ID
pmcid: string, // PMC ID
title: string, // 标题
authors: [string], // 作者列表
year: int, // 发表年份
journal: string // 期刊
})
关系类型 (Relationships)
1. BELONGS_TO (基因属于家族)
(g:Gene)-[:BELONGS_TO]->(gf:GeneFamily)
2. FROM_SPECIES (基因来自物种)
(g:Gene)-[:FROM_SPECIES]->(s:Species)
3. IN_GROUP (基因在分组中)
(g:Gene)-[:IN_GROUP]->(pg:PhylogenyGroup)
4. HAS_DOMAIN (基因有结构域)
(g:Gene)-[:HAS_DOMAIN {count: int, positions: [string]}]->(d:Domain)
5. HAS_MOTIF (基因有Motif)
(g:Gene)-[:HAS_MOTIF {position: int, score: float}]->(m:Motif)
6. ORTHOLOG (直系同源)
(g1:Gene)-[:ORTHOLOG {identity: float, coverage: float}]->(g2:Gene)
7. PARALOG (旁系同源)
(g1:Gene)-[:PARALOG {identity: float, coverage: float}]->(g2:Gene)
8. COEXPRESSED (共表达)
(g1:Gene)-[:COEXPRESSED {correlation: float, tissue: string}]->(g2:Gene)
9. CITED_IN (基因家族被文献引用)
(gf:GeneFamily)-[:CITED_IN {confidence: float}]->(p:Publication)
索引设计
// 基因ID索引
CREATE INDEX gene_id_idx FOR (g:Gene) ON (g.id);
// 基因家族名称索引
CREATE INDEX family_name_idx FOR (gf:GeneFamily) ON (gf.name);
// 物种名称索引
CREATE INDEX species_name_idx FOR (s:Species) ON (s.name);
// 文献DOI索引
CREATE INDEX publication_doi_idx FOR (p:Publication) ON (p.doi);
Cypher 查询示例
查询某基因家族的所有基因
MATCH (gf:GeneFamily {name: 'SPL'})<-[:BELONGS_TO]-(g:Gene)
RETURN g.id, g.name
查询某分组的所有基因
MATCH (pg:PhylogenyGroup {name: 'Group_I'})<-[:IN_GROUP]-(g:Gene)
RETURN g.id, g.name
查询两个基因的共表达关系
MATCH (g1:Gene {id: 'FtSPL1'})-[c:COEXPRESSED]-(g2:Gene {id: 'FtSPL2'})
RETURN c.correlation, c.tissue