Files
2026-07-10 17:59:59 +08:00

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