Initial: integrated 2025 LawGraph (graphrag_pipeline) + 2026 kg_project

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 10:13:39 +08:00
commit 6c1a69af0d
83 changed files with 14295 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
// Neo4j数据模型 - 城市规划法律法规知识图谱
// ============================================================
// 约束和索引
// ============================================================
CREATE CONSTRAINT law_id IF NOT EXISTS FOR (l:Law) REQUIRE l.law_id IS UNIQUE;
CREATE CONSTRAINT reg_id IF NOT EXISTS FOR (r:AdministrativeRegulation) REQUIRE r.reg_id IS UNIQUE;
CREATE CONSTRAINT rule_id IF NOT EXISTS FOR (r:DepartmentalRule) REQUIRE r.rule_id IS UNIQUE;
CREATE CONSTRAINT doc_id IF NOT EXISTS FOR (d:PolicyDocument) REQUIRE d.doc_id IS UNIQUE;
CREATE CONSTRAINT chapter_id IF NOT EXISTS FOR (c:Chapter) REQUIRE c.chapter_id IS UNIQUE;
CREATE CONSTRAINT section_id IF NOT EXISTS FOR (s:Section) REQUIRE s.section_id IS UNIQUE;
CREATE CONSTRAINT article_id IF NOT EXISTS FOR (a:Article) REQUIRE a.article_id IS UNIQUE;
CREATE CONSTRAINT body_id IF NOT EXISTS FOR (g:GovernmentBody) REQUIRE g.body_id IS UNIQUE;
CREATE CONSTRAINT subject_id IF NOT EXISTS FOR (s:LegalSubject) REQUIRE s.subject_id IS UNIQUE;
CREATE CONSTRAINT concept_id IF NOT EXISTS FOR (s:SpatialConcept) REQUIRE s.concept_id IS UNIQUE;
CREATE CONSTRAINT proc_id IF NOT EXISTS FOR (p:AdministrativeProcedure) REQUIRE p.proc_id IS UNIQUE;
// 索引
CREATE INDEX law_name IF NOT EXISTS FOR (l:Law) ON (l.name);
CREATE INDEX law_status IF NOT EXISTS FOR (l:Law) ON (l.status);
CREATE INDEX article_type IF NOT EXISTS FOR (a:Article) ON (a.article_type);
CREATE INDEX body_name IF NOT EXISTS FOR (g:GovernmentBody) ON (g.name);
CREATE INDEX subject_category IF NOT EXISTS FOR (s:LegalSubject) ON (s.category);
// 全文搜索
CREATE FULLTEXT INDEX law_search IF NOT EXISTS FOR (l:Law) ON EACH [l.name, l.full_title];
CREATE FULLTEXT INDEX article_search IF NOT EXISTS FOR (a:Article) ON EACH [a.text];
// ============================================================
// 导入命令示例
// ============================================================
// LOAD CSV WITH HEADERS FROM 'file:///nodes.csv' AS row
// WITH row WHERE row.type = 'Law'
// CREATE (:Law {law_id: row.id, name: row.label, full_title: apoc.text.replace(row.label, '"', '')});
//
// LOAD CSV WITH HEADERS FROM 'file:///rels.csv' AS row
// MATCH (a {id: row.source})
// MATCH (b {id: row.target})
// CALL apoc.create.relationship(a, row.type, {}, b) YIELD rel
// RETURN rel;
// ============================================================
// 常用查询
// ============================================================
// 查询某法律的所有条文
// MATCH (l:Law {name: '城乡规划法'})-[:HAS_CHAPTER]->(ch)-[:CONTAINS_ARTICLE]->(art:Article)
// RETURN ch.title, art.number, art.text;
// 查询引用某法律的法规
// MATCH (d)-[r:CITES]->(l:Law {name: '城乡规划法'})
// RETURN d.name, type(r), r.context;
// 查询涉及某主题的所有条文
// MATCH (art:Article)-[:REGULATES]->(s:LegalSubject {name: '建设用地'})
// RETURN art.text;
// 查询某机关发布的所有文件
// MATCH (d)-[:ISSUED_BY]->(g:GovernmentBody {name: '自然资源部'})
// RETURN d.name, labels(d);