Skip to content

PLOD-info/PLOD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Patient Locational Ontology-based Data (PLOD)

目次

概要

  • COVID-19の感染拡大防止に向けて,日本国政府では「3つの密」(以下,三密)や,「5つの場面」を提言しています.
  • これらの提言に基づき,各人の感染リスクを自動で評価できれば,追跡調査対象者の順序付けやスクリーニングといった保健所で行われている業務を大幅に効率化できると考えています.
  • そこで,場所や行動に紐づくCOVID-19感染リスクを整理し,個別の行動事例における感染リスクを推論可能なオントロジー(CIRO)を開発しました.
  • 本リポジトリでは,このオントロジーに基づいてナレッジグラフ化(RDF化)された疑似データ(PLOD)を,オープンデータとして提供します.
  • このようなデータを使用することで,追跡調査に有用な三密リスクの推論とグラフ検索が可能なことを示しています.

提案データセット

COVID-19感染リスク推論オントロジー(CIRO)

オントロジーの仕様書

全クラス・インスタンス・プロパティの説明は下記の仕様書を御覧ください。
https://plod-info.github.io/PLOD/ciro.html
以下で代表的なクラス・プロパティを説明します。

スキーマ図

黄色が新規に作成したクラス。青色が再利用したクラス。 CIROクラス図

接頭辞
Prefix URI
: http://plod.info/rdf/
time: http://www.w3.org/2006/time#
schema: http://schema.org/
xsd: http://www.w3.org/2001/XMLSchema#
代表的なクラス
Name Description
schema:Event イベント
:Situation 場所の状況
:Action 人の行動
:RiskAction リスク行動
:IndirectContact 間接接触行動
:DropletReachableAction 飛沫到達行動
:Context コンテキスト。RiskContextをより抽象化したクラス。
:RiskContext イベントや状況に関してリスク行動的な、またはリスク空間的なメタデータを表すクラス
:SpatialRiskContext 空間的な感染リスクを表す。
:BeihavioralRiskContext 行動的な感染リスクを表す。
:Crowding 密集
:ClosedSpace 密閉
:CloseContact 密接
:Time 時間(定性的、定量的なものを含む)
代表的なプロパティ
QName Domains Ranges Description
schema:location schema:Event schema:Place イベントの場所を表す.
:action schema:Event :Action イベントにおける人の行動を表す.
:agent schema:Event schema:Person イベントの主体.
:time schema:Event or schema:Situation :Time イベントや状況の時間を表す.
:followingEvent schema:Event schema:Event 次のイベントを表す.時系列的に直後のイベントを意味する.
:context schema:Event :Context イベントや状況に背景的・文脈的なセマンティクスを付与する.CIROにおいては主に空間的または行動的なリスク要因を表すのに使用される.
:afford schema:Place :Action 場所が誘引する人の行動を表す.
:isSituationOf :Situation schema:Place どの場所の状況であるか表す.

オントロジーに基づく個々のデータ(PLOD)

現在,構築したオントロジーを保健所のシステムに応用することを想定しています.そこで,システムへの導入を前に,行動調査を模した擬似的な行動シナリオの模擬データを作成し,オントロジーに基づいてナレッジグラフ化しました.例えば,下図のような行動イベントがナレッジグラフ化されています.赤矢印はCIROのOWL推論により導出されるリンクです. kgの例

PLODの使用例

PLODはRDF形式のデータで提供しているため,トリプルストアに格納することで,クエリ言語SPARQLを使用して様々な検索が可能です.

参考資料:

SPARQLクエリ例

以下のSPARQLクエリの一部はOWL 2 DL推論をサポートした推論エンジン(Pellet, HermiT)が必要になります。

リスクのあるイベントまたは状況

PREFIX plod: <http://plod.info/rdf/>
PREFIX schema: <http://schema.org/>
select ?event where { 
    ?event a plod:RiskContext ;
        a ?o .
    filter(?o = plod:Situation || ?o = schema:Event)
}

密閉している状況

PREFIX plod: <http://plod.info/rdf/>
select ?s where { 
    ?s a plod:ClosedSpace .
}

密接しているイベント

PREFIX plod: <http://plod.info/rdf/>
select ?s where { 
    ?s a plod:CloseContact .
}

密集している状況

PREFIX plod: <http://plod.info/rdf/>
select ?s where { 
    ?s a plod:Crowding .
}

時間的,空間的に交差する異なる2つの行動イベントの組み合わせ

PREFIX plod: <http://plod.info/rdf/>
PREFIX schema: <http://schema.org/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?event1 ?place1 ?city1 ?event2 ?place2 ?city2 where { 
  ?event1 a schema:Event ; 
            plod:time ?time1 ;
            schema:location ?place1 .
    ?place1 plod:city ?city1 .
    ?time1  time:hasBeginning ?begin1 ; 
            time:hasEnd ?end1 .
  ?event2 a schema:Event ; 
          plod:time ?time2 ; 
    		plod:agent ?agent ;
          schema:location ?place2 .
    ?event2 schema:location ?place1 .
    ?place2 plod:city ?city1 .
  ?time2 time:hasBeginning ?begin2 ; time:hasEnd ?end2 .
    filter(xsd:dateTime(?end1) > xsd:dateTime(?begin2) 
        && xsd:dateTime(?begin1) < xsd:dateTime(?end2))
  filter(?event1 != ?event2)
}

同じ都市かつ開始・終了時間がオーバーラップするイベントの組

PREFIX plod: <http://plod.info/rdf/>
PREFIX schema: <http://schema.org/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
select distinct ?event1 ?place1 ?city1 ?event2 ?place2 ?city2 where { 
  ?event1 a schema:Event ; 
            plod:time ?time1 ;
            schema:location ?place1 .
    ?place1 plod:city ?city1 .
    ?time1  time:hasBeginning ?begin1 ; 
            time:hasEnd ?end1 .
  ?event2 a schema:Event ; 
          plod:time ?time2 ; 
            plod:agent ?agent ;
          schema:location ?place2 .
    ?event2 schema:location ?place1 .
    ?place2 plod:city ?city1 .
  ?time2 time:hasBeginning ?begin2 ; time:hasEnd ?end2 .
    filter(xsd:dateTime(?end1) > xsd:dateTime(?begin2) 
        && xsd:dateTime(?begin1) < xsd:dateTime(?end2))
  filter(?event1 != ?event2)
}

Aさんが参加している密閉イベントに同席している人物を,同席回数で降順表示

PREFIX plod: <http://plod.info/rdf/>
PREFIX schema: <http://schema.org/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?agent (count(distinct ?event) AS ?cnt)  WHERE { 
	?event plod:agent <http://plod.info/rdf/id/person_a_A> ;
        plod:agent ?agent ;
        plod:time ?time ;	
        schema:location ?place .
    filter (?agent != <http://plod.info/rdf/id/person_a_A>)
    ?situation plod:isSituationOf ?place .
    ?situation rdf:type ?sanmitsu .
    ?sanmitsu rdfs:label "中密閉"@ja .
} GROUP BY ?agent ORDER BY DESC(?cnt)

中密閉となった場所と、その場所で行われたイベント回数を降順表示

PREFIX plod: <http://plod.info/rdf/>
PREFIX schema: <http://schema.org/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select ?place (count(distinct ?event) AS ?cnt) where { 
    ?event schema:location ?place .
    ?situation plod:isSituationOf ?place ;
               a [ rdfs:label "中密閉"@ja] .
} group by ?place order by DESC(?cnt)

特定の期間でリスクのあるイベントとリスクの種類を取得

PREFIX plod: <http://plod.info/rdf/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
select ?s ?type where { 
    ?s a ?type ;
       plod:time ?time .
    ?time time:hasBeginning ?begin ;
          time:hasEnd ?end .
    filter (?begin >= "2020-12-06T19:30:00"^^xsd:dateTime)
    filter (?end >= "2020-12-06T21:30:00"^^xsd:dateTime)
    filter (?type = plod:ClosedSpace || ?type = plod:CloseContact || ?type = plod:Crowding)
}

3つの密の推論実験の結果

3つの密を更に3段階(高リスク、中リスク、低リスク(リスク無し))に分けて,与えられた行動イベントや空間的な状況がどのリスクに該当するか,OWL 2 DL推論により判定する実験を行いました.

OWL 2 DL推論が可能なHermiTを内包するOwlready2を使用した実験用スクリプトを公開しています.各リスクパターンの疑似データ(PLOD)を自動的に作成し,CIROを用いて正しく推論できるか評価を行います.

実験の結果,CIROはこれらのリスクを正しく推論できることを確認しました.

実験スクリプトおよび結果:
DOI

LODチャレンジ2022向けの説明

  • Impact - 影響力
    • 提案オントロジー(CIRO)を保健所のシステムに導入し,PLODデータとして蓄積することで,濃厚接触者の追跡調査の順序付けやスクリーニングといった,保健所で行われている業務を大幅に効率化できます.
    • 新型コロナウイルス感染症の患者の実データはプライバシーの問題から一般利用が困難ですが,本データセットは実データに近い模擬データセットであるため,広く感染対策に関する研究開発に利用することができる.
  • Creativity - 創造力
    • 人の行動と空間に着目して,「3つの密」や「5つの場面」といったわかりやすい感染リスク指標を用いて推論できる,他に類を見ないオントロジーです.さらに,模擬データセットをオープンデータとして公開している点も新しいです.
  • Usefulness - 有用性
    • 場所や時間などの任意の項目をキーとした検索や,三密の程度の推論が可能です.
    • 感染クラスターの特定や,追跡調査の優先度が高い濃厚接触者の特定に利用できます.
  • Accessibility - 機械可読性
    • オントロジー(CIRO)、模擬データ(PLOD)ともにRDF形式で提供し,可能な限りエンティティをリテラルではなくURI付きリソースとしており,機械可読性は高いと言えます.
  • Openness - 開放性
    • CC BY 4.0ライセンスのオープンデータとして公開しています.
    • RDF化されており,各エンティティに一意なURIが付与されていますが,参照解決は今後の課題としています.
  • Linkability - つながる可能
    • 多くのLODで使用されているschema.orgの語彙を再利用しており,間接的に多くのデータセットとつながることができます.特に,人の行動やイベントに関するデータセットとつながる可能性が高いと考えます.
    • Simple Event Modelを参考にしたイベント中心モデルであり,他のデータセットとの連携や拡張性に優れています.
    • 今後の疫学的調査結果を踏まえて三密ルールを調整可能であり,ひいては新型コロナウイルス以外の感染症にも適用できる可能性があります.
  • Sustainability − 持続可能性
    • 独自サーバではなくGitHub repositoryで管理しており,持続可能性は高いです.
    • 現在,北海道庁との連携の議論が進んでおり,継続的な開発と社会実装が見込まれます.

リファレンス

  • Shusaku Egami, Yasunori Yamamoto, Ikki Ohmukai, Takashi Okumura: CIRO: COVID-19 Infection Risk Ontology, PLOS ONE, 18(3):e0282291, pp.1-18 (2023) [Open Access]
  • 江上周作,山本泰智,大向一輝,奥村貴史: オントロジーを用いたCOVID-19感染リスク行動の推論,第56回人工知能学会セマンティックウェブとオントロジー研究会, SIG-SWO-056-16 (2022) [Open Access]

ライセンス

クリエイティブ・コモンズ・ライセンス
江上周作,山本泰智,大向一輝,奥村貴史 作『Patient Locational Ontology-based Data (PLOD)』はクリエイティブ・コモンズ 表示 4.0 国際 ライセンスで提供されています。

謝辞

本研究は,AMEDの課題番号JP20he0622042の支援を受けた.また,神崎正英氏,坂根昌一氏,伊藤真和吏氏,野本昌子氏には,本研究を進める上で様々なご助力を頂いた.ここに深く感謝の意を表する.

About

Patients Locational Open Data (PLOD)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published