Graphs4Good: 使用Neo4j Bloom实现新冠病毒案例的接触史追踪

本文展示了如何利用Neo4j Bloom图形数据库解决新冠病毒接触史追踪问题,通过加载病例数据,定义查询模板,追踪感染源和传播路径,以帮助政府和组织及时响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(本文的英文原文发表于:https://community.neo4j.com/t/graphs4good-protecting-community-from-covid-19-by-answering-key-questions-in-neo4j-bloom/17291)

       尽管目前世界上大多数国家都在半封锁状态、以减慢致命的COVID-19病毒的传播,但寻找治愈方法的斗争从未停止。赢得这场前所未有的反病毒战争的关键很大程度上取决如何利用现有的数据来确定感染源、了解病毒如何传播以及保护社区免受感染。到目前为止,接触史追踪(Contact Tracing)已被认为是遏制情况恶化的最有效方法之一。

       时机至关重要。

       政府,组织甚至个人都需要一种追踪高风险患者和地点的方法。每天发布的确诊病例数量还远远不够。能够将那些确诊案例的详细信息包括何人、何时、何地以及传播途径等联系起来的能力比以往任何时候都更加重要,只有这样才能提供及时和可行的反应和预测。显然,这是图数据库解决方案的一个完美的问题。

       基于Neo4j社区和相关政府机构的一些想法,使用公开可用的案例数据(不包含身份信息),我用周四花了一个晚上的时间使用Neo4j Bloom构建此解决方案,以帮助回答(是的,以自然语言)接触史追踪的关键问题。以下是具体的方法。

1.加载数据

       为了深入了解病毒如何在人群中传播,我们需要个别的病例数据,而不是病例统计。实际上,Kaggle发起的COVID-19挑战赛提供这样的个别案例数据,可在此处找到:UNCOVER COVID-19挑战赛1 

        我也在Github上分享了本项目,可以找到2个数据文件。个例文件的布局不难理解,以下是Cypher LOAD CSV语句,可将数据加载到Neo4j中:

// 1.1 Load individual case data of Canada file by Kaggle

USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM 'file:///individual-level-cases.csv' AS line
MERGE (p:State:Canada{name:line.province})
CREATE (c:Case:Canada{caseId:line.case_id})
SET c.ageGroup = line.age, c.healthRegion = line.health_region, c.reportDate = line.date_report,
c.acquireMethod = line.locally_acquired, c.acquireSource = line.travel_history_country, c.source = line.case_source,
c.sex = line.sex, c.state= line.province, c.community = line.community,
c.linkedCase = line.linked_case
MERGE (c) -[:LIVES_IN]-> (p)
WITH c,p,split(line.travel_history_country,',') AS places
UNWIND places AS place
MERGE (pl:Place{name:trim(place)})
MERGE (c) -[:HAS_VISITED]-> (pl)

// 1.2 Load indivudual case file of Kore

neo4j api neo4j学习资料 neo4j教程 │ neo4j官方API(官方各种API的文档整理).7z │ neo4j数据迁移--初探(一).htm │ neo4j笔记.docx │ neo4j错误码状态码.html │ └─01.neo4j学习博客汇总 │ index.html └─neo4j_cypherCypher(神奇的WITH).html │ cypher_index.html │ Cypher查询语言--Neo4j 综合(四) - divenswu - 博客园.html │ Cypher查询语言--Neo4j中的SQL - 爱上包子 - 博客园.html │ DETACH DELETE n 删除node n ,并删除所有与n相关的关系.html │ Neo4j - NOT IN query.html │ Neo4j CQL - (11)- REMOVE删除 DELETE.html │ Neo4j Cypher 复杂查询详解在之With - 何源浩的博客 - 优快云博客.html │ neo4j使用sparql查询.html │ Neo4j 中文社区,致力于 Neo4j 的技术研究。.html │ Neo4j 使用cypher语言进行查询 - MHL - 博客园.html │ Neo4j 第一篇:在Windows环境中安装Neo4j - 悦光阴 - 博客园.html │ Neo4j 第三篇:Cypher查询入门 - 悦光阴 - 博客园.html │ Neo4j 第二篇:图形数据库 - 悦光阴 - 博客园.html │ Neo4j 第五篇:批量更数据 - 悦光阴 - 博客园.html │ Neo4j 第四篇:使用C更和查询Neo4j - 悦光阴 - 博客园.html │ Neo4J(Cypher语句)初识.html │ Neo4J(Cypher语句)学习 - 赵晓雷的专栏 - 优快云博客.html │ Neo4j_事务&深度遍历.html │ neo4j中的分组查询.html │ Neo4jCypher学习总结.html │ NEO4J亿级数据导入导出以及数据更 - 耶和华靠近伤心的人,拯救灵性痛悔的人 - CS.html │ Neo4j入门点滴(一):Cypher.html │ Neo4j入门点滴(三):用Cypher完善图.html │ Neo4j入门点滴(二):模式与模式匹配.html │ Neo4j入门点滴(五):Windows Shell for Cypher.html │ Neo4j入门点滴(四):Cypher查询优化.html │ Neo4J几种数据导入方式的效率对比 - 何源浩的博客 - 优快云博客.html │ Neo4j模糊查询及分页查询 - c1052981766的专栏 - 优快云博客.html │ neo4j笔记 - Neo4j 中文社区.html │ Neo4j语句 - zhuweiba_321的博客 - 优快云博客.html │ Neo4j语句 - 阿里云.html │ 【程裕强的专栏】大数据学习笔记(1.01^365=37.78,0.99^365=0.025.html │ 五岳之巅-Neo4j入门点滴-博文目录.html │ 关于Neo4jCypher批量更和批量插入优化的5个建议 - 逆水行舟 - 优快云博.html │ 图数据库-Neo4j介绍与Cypher入门.html │ 图数据库Cypher语言 - 活的洒脱怪我咯的专栏 - 优快云博客.html │ 图数据库neo4j-jdbc的使用 - 活的洒脱怪我咯的专栏 - 优快云博客.html │ 数据分页处理系列之三:Neo4j图数据分页处理.html │ 暖暖动听.html │ 飘涯 - 简书.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值