| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- """验证元知识图谱:实体统计与到项目枢纽的联通关系。"""
- from neo4j import GraphDatabase
- from knowledge_agent.config import get_settings
- def main() -> None:
- s = get_settings()
- with GraphDatabase.driver(s.neo4j_uri, auth=(s.neo4j_user, s.neo4j_password)) as d:
- q1 = """
- MATCH (e:实体类型)
- RETURN e.name AS entity, e.count AS cnt, e.is_hub AS hub
- ORDER BY cnt DESC
- """
- print("== 实体类型与数量 ==")
- for r in d.execute_query(q1).records:
- hub = " [枢纽]" if r["hub"] else ""
- print(f" {r['entity']}: {r['cnt']}{hub}")
- q2 = """
- MATCH (e:实体类型)-[rel:关联 {type:'所属项目'}]->(p:实体类型 {name:'项目'})
- RETURN e.name AS src, rel.key AS key, rel.cardinality AS card
- """
- print("== 联通到项目枢纽的实体(关联键) ==")
- for r in d.execute_query(q2).records:
- print(f" {r['src']} --所属项目--> 项目 键: {r['key']} 基数: {r['card']}")
- q3 = """
- MATCH (d:部门)-[:提供]->(f:数据源)-[:产出]->(e:实体类型)
- RETURN d.name AS dept, count(DISTINCT f) AS files, count(DISTINCT e) AS entities
- ORDER BY dept
- """
- print("== 部门 → 文件 → 实体 汇总 ==")
- for r in d.execute_query(q3).records:
- print(f" {r['dept']}: {r['files']} 个文件, 产出 {r['entities']} 类实体")
- if __name__ == "__main__":
- main()
|