verify_meta.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """验证元知识图谱:实体统计与到项目枢纽的联通关系。"""
  2. from neo4j import GraphDatabase
  3. from step2_graph_building.config import get_settings
  4. def main() -> None:
  5. s = get_settings()
  6. with GraphDatabase.driver(s.neo4j_uri, auth=(s.neo4j_user, s.neo4j_password)) as d:
  7. q1 = """
  8. MATCH (e:实体类型)
  9. RETURN e.name AS entity, e.count AS cnt, e.is_hub AS hub
  10. ORDER BY cnt DESC
  11. """
  12. print("== 实体类型与数量 ==")
  13. for r in d.execute_query(q1).records:
  14. hub = " [枢纽]" if r["hub"] else ""
  15. print(f" {r['entity']}: {r['cnt']}{hub}")
  16. q2 = """
  17. MATCH (e:实体类型)-[rel:关联 {type:'所属项目'}]->(p:实体类型 {name:'项目'})
  18. RETURN e.name AS src, rel.key AS key, rel.cardinality AS card
  19. """
  20. print("== 联通到项目枢纽的实体(关联键) ==")
  21. for r in d.execute_query(q2).records:
  22. print(f" {r['src']} --所属项目--> 项目 键: {r['key']} 基数: {r['card']}")
  23. q3 = """
  24. MATCH (d:部门)-[:提供]->(f:数据源)-[:产出]->(e:实体类型)
  25. RETURN d.name AS dept, count(DISTINCT f) AS files, count(DISTINCT e) AS entities
  26. ORDER BY dept
  27. """
  28. print("== 部门 → 文件 → 实体 汇总 ==")
  29. for r in d.execute_query(q3).records:
  30. print(f" {r['dept']}: {r['files']} 个文件, 产出 {r['entities']} 类实体")
  31. if __name__ == "__main__":
  32. main()