グラフで環境汚染の課題解決を!#neo4j #グラフ #環境汚染
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは 「Neo4j」 社の技術ブログで2021年11月13日に公開された「 Graph: A Possible Solution for Environmental Pollution! 」の日本語翻訳です。
現代社会の課題を解決するためのソリューションモデルを構築することは、私のパッションです。グラフをベースとしたソリューションモデルは、ヘルスケア、金融、詐欺対策、新型コロナ追跡など、さまざまな分野で利用されています。
現在、環境汚染は私たち人類にとって深刻な課題です。各国はCOP26やSDG13に参加して、炭素排出量を実質ゼロにすることを目指しています。
地球温暖化も、水質汚染も、水循環の激変も、異常気象も、すべてが何らかの形でつながっています。私はその点に着目し、それらの環境汚染のつながりのパターンをグラフベースのソリューションモデルで表現することを思いつきました。このアイデアを世界に向けて発表する素晴らしい機会を、Neo4j Leonhard Euler Idea Contest が提供してくれました。
もちろん、アイデアだけでは不十分で、それがどのように機能するのか、採用する価値や有効性があるかを示さなければなりません。そこで、インターネットから少しサンプルデータセットを集めました。(私のGit参照)
産業公害分析のグラフモデル
グラフモデルはとてもシンプルです。このグラフモデルでは、つながりのあるパターン(関係性の矢印)が地域の汚染の原因となりうる産業を、それぞれの地域の大気質・水質の測定値や病気の症例とリンクさせて見つけ出している様子が分かります。パターンの裏付けをもとに、早急な対策を根本レベルで講じることができるのです。
パターンの裏付けという表現について。すべての産業が規範に沿って活動しているのなら、なぜトラッキングが容易に行えないのでしょうか?なぜトラッキングは複雑で、時間がかかるのでしょうか?その答えは「つながり」かもしれません。パターンによる裏付けを見つけることは困難です。グラフはこのプロセスそのものをシンプルにしてくれる可能性があります。
以下は、ソリューションモデルのデータポイントの概要です。
CityノードとPollutantノードはHAS_POLLUTANTSでリンクされており、一定の時間間隔ごとに大気質の測定値が記録されます。
Pollutantノードは都市(City)で見つかった汚染物質であり、Diseaseノードは都市(City)で報告された病気です。産業(Industry)ノードでは、汚染物質や有害化学物質に関連している原材料(RawMaterials)の使用や製造プロセス(Process)を持っています。
以下は、都市の汚染や病気の原因となっている産業を明らかにすることができる簡単なクエリの例です。
MATCH (c:City)<-[r:REPORTED_IN]-(d:Disease)-[:RELATED_TO]->(p:Pollutants)<-[r1:HAS_POLLUTANTS]-(c) WHERE r.reportedYear=r1.reportedOnYr AND r1.reportedLevel>r1.maxPermissibleLevel
MATCH (p)-[:LINKED_TO]->()<--(i:Industries)-[:IS_IN]->(c)
RETURN DISTINCT r.reportedYear AS Year, c.city AS City,
p.pollutant as Pollutant, d.disease AS Disease,
r.patientCount AS DiseaseCaseCount, i.industry AS Industry
結果
これで、いかに簡単にパターンによる裏付けをクエリできるかわかりますね。
最後に、このソリューションモデルの次のステップにも触れたいと思います。
公害の原因となる産業ドメインなどの要素をノードとして追加したり、製造プロセスと原材料をリンクしたり、国別の分析などが考えられます。
以上、環境汚染のソリューションモデルについてご紹介しました。提案や改善は大歓迎です、コメントお待ちしています。(コメントは原文コメント欄へどうぞ )