// 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);