#!/usr/bin/env python3 """ 圐圙文化网络演示 - 使用现有 Neo4j 实例 运行前请确保 Neo4j 容器已启动:docker start neo4j-gpu 或 neo4j-cpu """ from neo4j import GraphDatabase import json class KulueNetworkDemo: def __init__(self, uri="bolt://localhost:7687", user="neo4j", password="password"): """连接到现有的 Neo4j 实例""" try: self.driver = GraphDatabase.driver(uri, auth=(user, password)) # 测试连接 with self.driver.session() as session: session.run("RETURN 1") print("✅ 成功连接到 Neo4j 数据库") except Exception as e: print(f"❌ 连接失败: {e}") print("请确保 Neo4j 容器已启动:docker start neo4j-gpu") self.driver = None def close(self): if self.driver: self.driver.close() def demo_kulue_concepts(self): """演示圐圙核心概念""" if not self.driver: return print("\n🎯 圐圙文化网络核心概念演示") print("=" * 50) # 核心概念数据 concepts = { "圐圙": { "含义": "天下、穹庐", "来源": "蒙古语 küriye", "文化意义": "天似穹庐,笼盖四下", "相关词汇": ["库伦", "固伦", "克烈", "昆仑"] }, "忽里勒台": { "含义": "大会、议事", "来源": "蒙古语 Hurul'tai", "文化意义": "长生天见证的神圣会议", "相关概念": ["独贵龙", "圐圙"] }, "索永布": { "含义": "蒙古文字符号", "结构": "智慧之火 + 日月 + 圐圙地象", "文化意义": "蒙古民族的宇宙观", "相关概念": ["阿胡拉·马兹达", "长生天"] } } for concept, details in concepts.items(): print(f"\n📚 {concept}") for key, value in details.items(): if isinstance(value, list): print(f" {key}: {', '.join(value)}") else: print(f" {key}: {value}") def demo_word_network(self): """演示词汇网络关系""" print("\n🔗 圐圙词根网络关系") print("=" * 50) # 词汇关系网络 word_network = { "昆仑": { "音转": ["库伦", "固伦", "克烈", "崆峒", "洪洞"], "同义": ["祁连", "轩辕", "贺兰"], "含义": "神山、天" }, "轱辘": { "音转": ["辘轳", "囫囵"], "功能": "圆形、转动", "含义": "车轮、井具" }, "圐圙": { "音转": ["忽里勒台"], "政治": ["库伦", "固伦"], "含义": "天下、穹庐" } } for word, relations in word_network.items(): print(f"\n🔤 {word}") for relation_type, related_words in relations.items(): if isinstance(related_words, list): print(f" {relation_type}: {' → '.join(related_words)}") else: print(f" {relation_type}: {related_words}") def demo_three_empires(self): """演示三个帝国框架""" print("\n🏛️ 三个帝国框架") print("=" * 50) empires = { "第一帝国:长城": { "时期": "夏商周秦 → 汉三国南北朝", "象征": "秦始皇横接三国长城", "意义": "400毫米等降雨量线,华夏大防", "核心": "从黄河到长城,中华文明重心" }, "第二帝国:运河": { "时期": "隋唐五代 → 辽金夏宋", "象征": "隋炀帝纵贯五河", "意义": "南北统一,国家认同", "核心": "黄河与长江都是一个国家认同" }, "第三帝国:圐圙": { "时期": "蒙元 → 明清民国", "象征": "忽必烈经略东亚", "意义": "汉字文化圈认同", "核心": "认同只与内心相连,无关血脉" } } for empire, details in empires.items(): print(f"\n👑 {empire}") for key, value in details.items(): print(f" {key}: {value}") def demo_cultural_analysis(self): """演示文化分析框架""" print("\n🎨 文化分析框架") print("=" * 50) analysis = { "北朝宇宙理论": { "地理逻辑": "东西阻隔,南北通透", "政治模式": "游牧民族南下逐鹿中原", "文化特征": "胡汉交融,多元一体" }, "晋语活化石": { "语言特征": "胡汉交融的语言遗存", "词汇特点": "大量连绵词、借词", "文化价值": "保存古代语音和词汇" }, "符号系统": { "索永布": "蒙古民族宇宙观", "姑姑帽": "昆仑帽的音转", "圐圙地象": "太极图 + 南下箭头" } } for framework, details in analysis.items(): print(f"\n🔍 {framework}") for key, value in details.items(): print(f" {key}: {value}") def generate_cypher_examples(self): """生成 Cypher 查询示例""" print("\n💻 Neo4j Cypher 查询示例") print("=" * 50) queries = [ { "描述": "创建圐圙核心节点", "查询": """ CREATE (kulue:Concept { name: '圐圙', meaning: '天下、穹庐', origin: '蒙古语 küriye', category: '核心概念' }) """ }, { "描述": "创建词汇音转关系", "查询": """ MATCH (source:Word {name: '昆仑'}) MATCH (target:Word {name: '库伦'}) CREATE (source)-[:SOUND_SHIFT {type: '音转', confidence: 0.9}]->(target) """ }, { "描述": "查找圐圙相关词汇", "查询": """ MATCH (kulue:Concept {name: '圐圙'})-[r*1..2]-(related) RETURN kulue.name, type(r), related.name, related.meaning """ }, { "描述": "分析词汇演化路径", "查询": """ MATCH path = (start:Word {name: '昆仑'})-[:SOUND_SHIFT*1..3]-(end:Word) RETURN [node in nodes(path) | node.name] as evolution_path """ } ] for i, query in enumerate(queries, 1): print(f"\n{i}. {query['描述']}") print(f"```cypher{query['查询']}```") def main(): """主演示函数""" print("🎯 忽汗3000文化项目 - 圐圙网络演示") print("=" * 60) demo = KulueNetworkDemo() try: demo.demo_kulue_concepts() demo.demo_word_network() demo.demo_three_empires() demo.demo_cultural_analysis() demo.generate_cypher_examples() print("\n🚀 下一步建议:") print("1. 启动 Neo4j 容器:docker start neo4j-gpu") print("2. 访问 Neo4j Browser:http://localhost:7474") print("3. 运行 Cypher 查询构建完整网络") print("4. 使用可视化工具展示词汇关系") finally: demo.close() if __name__ == "__main__": main()