226 lines
7.7 KiB
Python
226 lines
7.7 KiB
Python
#!/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() |