2.IMI共通語彙基盤の（最低限おさえておきたい）技術仕様／記法の解説

2018年12月21日「IMI事例共有・勉強会」

1

IMI共通語彙基盤のアプローチ
・相互運用性のための共通語彙の必要性
類似の用語、重複する用語、分野で意味が異なる同一語といった用語の氾濫による混乱をもたらしています。
人間が文書を読む場合は、これらの用語の混乱は読む側で整理され、多くの場合は問題がありません。しかし、文書をコンピューターで処理する場合は大きな問題となります。例えば、ある事柄を検索しようと文書のデータベースをある用語で検索した時、もしその用語と同じ意味の別の用語があるなら、検索結果は不十分になってしまいます。これは文書だけの問題ではありません。行政に関わるデータは言語で書かれた表題、項目名をつけて生成されています。この表題や項目名においても用語の混乱が影響を及ぼします。
データにおいては、データの部分的な抽出や複数のデータの統合といったデータ処理はコンピューターが行うため、用語の混乱はより影響が大きくなります。例えば、あるデータにある項目と別のデータにある項目は見た目では同じ用語で記述されていたらひとまとめにしてよいでしょうか。分野が異なれば見た目は同じでも別の意味を示す用語かもしれませんし、逆に見た目が違っても同じ意味を指す用語が他にあるかもしれません。
人間であればその都度判断することもできますが、コンピューターの処理においては困難です。
このようにコンピューターが処理するということを前提におくと、これまで以上に用語の混乱は避けないといけません。
2

・IMI共通語彙基盤のアプローチ
それぞれの用語にはそれぞれの分野での必要性や由来があるわけで、単に用語を減らせばよいわけではありません。そこで、IMI共通語彙基盤ではこの用語の氾濫による混乱に対して、次のような方針でアプローチすることにしました。
・共通性の高いところから始める
まず、対象としては分野を超えて使われるような事柄を中心に扱うことにします。例えば、【人】【組織】といった事柄は分野を問わず使われるものです。このような基本的な事柄を対象として語彙基盤を構築していくことにします。また、その記述においては多くの場合に当てはまるような記述を目指すことにします。
・概念共通化する対象は事柄を指し示す概念とします。文章や表題名、項目名、項目の値などに出てくる語（言葉、単語）は概念を表現する手段と考えます。例えば、【人】という概念があったとき、文書の中で【人】を表現するときに「人間」という語を使うかもしれませんし、「人」あるいは「Person」という語を使うかもしれません。この場合、IMI共通語彙基盤では、語「人」「人間」「Person」は同じ概念【人】を指しているということで、同じ意味をもつ語と判断します。このように対応させることで、分野における用語の多様性を許容します。ただし、そうはいっても用語が不必要に多様化することは望ましくありません。このため、IMI共通語彙基盤では原則として、一つの概念には一つの語（概念の名称に対応する語）を代表的な表記として用意することで、この語を使うことを推奨します。なお、IMI共通語彙基盤では、特に混同が問題ない場合は、概念を用語と呼びます。すなわち、上の例では用語【人】は人という概念を示すもので、「人」、「人間」などと表記しています。

3

・概念と個体ある語を用いたとき、抽象的な事柄を示しているときと、具体的な事柄を示しているときがあります。「人には名前がある」といったときは「人」は誰かを指しているわけではなく、人という概念そのものに関しての説明となっています。一方、「前の道路で人が電柱にぶつかった」といったときには、「人」は特定の誰かを指しているのであって、人という概念に関することを説明しているわけではありません。最初の場合は言及しているのは概念、2番目の場合は個体（あるいは個別の事柄）を言及しているわけです。
IMI共通語彙基盤では、個体を指すときは、ある概念の具体化と考えます。「田中さん」という人物を指すときは【人】概念の一つであるというように表現します。このようにすることで、表型データ等で、どんな値が入るかを明確に指示することができます。例えば、ある表型のデータを書くとき、ある項目には参加者が入って欲しいなら、この項目の値は【人】概念の具体化であるというように指示することができます。
・二つの種類の概念対象とする概念は2種類あります。一つは【人】、【施設】、【イベント】と行った事柄（事物や出来事）に関する概念です。これをクラス概念と呼ぶことにします。クラス概念は、上で述べたように、個体を表現するときに用います。個体から見れば、その種類を示すことになります。
次に【性別】や【所有者】といった事柄の性質や事柄と事柄の関係を指し示す概念があります。これをプロパティ概念と呼ぶことにします。プロパティ概念はある事柄が特定の性質や属性をもつということを示す概念で、事柄を示す概念をその性質・属性の値を示す別の事柄や説明に結び付けます。例えば、ある人（【人】というクラス概念の具体化）は【性別】として”男”という説明に結びつけられますし、【本籍】というプロパティ概念でその人の本籍の住所（クラス概念【住所】の具体例）に結びつけられます。
4

・より具体的な概念
もう一つの概念間の関係は、継承関係です。ある概念は別の概念のより具体的なものということはよくあります。例えば、【駐車場】は【施設】の一種です。こうした関係を継承関係といいます。この場合、元の基本的な方の概念が持っている性質・属性に加えて、さらにこの概念独自の性質や属性を持っています。このように概念の共通性を利用して概念を用意することで、個々の概念も理解しやすくなりますし、概念同士の関係も理解しやすくなります。
・IMI共通語彙の表記
IMI共通語彙における用語は独自の形式で定義されますが、利用にあたっては、実際のシステムやサービスで使う言語形式に変換して用いられます。IMI共通語彙基盤では、RDF、XML及び構造化項目名（日本語シリアライズ形式）の3つの形式を用意しています。
RDF (Resource Description Framework)はオープンデータ等においてよく用いられるフレームワークです。
データに対する厳密な制約などは得意ではありませんが、それほど厳密な制約が要らないときや、世界中で使われているオープンデータと組み合わせて使う時には便利です。
XML(Extensible Markup Language)はシステムにおけるデータ形式の記述によく用いられる言語です。データに対する制約は書きやすく、システム間のデータ交換等においては便利です。
構造化項目名（日本語シリアライズ形式）とは、IMI共通語彙基盤での表記を日本語の文字列として表現するものです。IMI共通語彙基盤での表記は構造的な情報ですが、これを一定の表記ルールで、文字列として表現しています。表形式のデータの項目名や文章の一部として使う時に用意したものです。
5

・IMI共通語彙基盤の全体の構成
IMI共通語彙基盤は2層からなります。中心となるのは、コア語彙と呼ばれるもので、最も基本的な語彙を対象としたものです。コア語彙は分野に依存せず多くの分野でよく使われるような用語を収録する語彙です。ドメイン語彙は、分野ごとに用意される語彙です。ドメイン語彙はそれぞれの分野の基礎的な用語であり、また分野を超えてもよく使われる共通性の高い用語を収録する語彙です。ドメイン語
彙はコア語彙の拡張として定義されます。すなわち、コア語彙にある用語を継承して、その分野固有の用語を定義します。
さらに特定の課題やシステムで用いられる語彙を応用語彙といいます。応用語彙は、コア語彙やドメイン語彙の中の用語やこれらの語彙の用語を必要に応じて拡張した用語を用意して、その課題やシステムに必要な用語を取り揃えたものです。
語彙に加えて、その用語の利用の仕方（制約といったもの）も含めて、語彙を使うための情報を取りまとめたものをDMDと呼びます。

6

IMI共通語彙基盤の利活用イメージ
Modelの設計者

Dataの提供者

Mappingの作成者DMD
ModelMapping…

必要スキル：コア語彙・IMI技術仕様の網羅的知識
利用ツール：語彙作成・コード作成・DMD作成

IMIスキル： コア語彙・IMI技術仕様の一部(構造化項目名記法など)
利用ツール：DMD作成・データ形式変換

IMIスキル： IMIツールの利用
利用ツール：データ形式変換

公開データ

アプリケーションの閲覧・利用者
IMIスキル： 不要
適用ツール： なし

利用アプリケーションの作成・提供者
IMIスキル： コア語彙・IMI技術仕様の一部(DMD仕様、語彙記法など）
利用ツール：DMD検証・データ検証・
データ形式変換7語彙の利用モデル
語彙（コア語彙、ドメイン語彙）の定義は、XMLのスキーマおよびRDFのスキーマとして提供され、実際のデータ交換に用います。語彙に基づいたデータ項
目とその構造は、それらの語彙スキーマを参照してXMLとRDFそれぞれに定義することができます。

データ構造定義、各項目の値の範囲、書式、使用可能な文字セットの指定などの情報（データモデル）は、それら各定義ファイルへの参照を含め、Data Model Description（DMD）でまとめて記述します。それらを、語彙を用いたデータの利用者間でDMDを共有することによって、語彙に基づくデータ交換が実現されます。

XMLスキーマだけで十分!!!
DMD…うーん
語彙記法…えっ?

RDFスキーマだ
けで十分!!!
DMD…うーん
語彙記法…えっ?

語彙を特定の利用形式に依存しない中立的な形式で記述することで、アプリケーションソフトウェア、データ作成者、アプリケーション開発者（データ利用者）の全てがそれぞれ扱いやすい形式でデータを扱うことができます。
8

コア語彙のスキーマ取得のための名前空間について
コア語彙のスキーマ取得のための名前空間は、HTTPリクエストのACCEPTヘッダーを参照し、下記の表のレスポンス欄に指定されたものをHTTPレスポンスとして返します。
XML名前空間https://imi.go.jp/ns/core/2
Acceptヘッダー
レスポンス
application/xml
XMLスキーマ
text/html
コア語彙一覧表（HTML）*.*
コア語彙一覧表（HTML）
RDF名前空間https://imi.go.jp/ns/core/rdf#
Acceptヘッダー
レスポンスapplication/rdf+xml
RDFスキーマRDF/XML形式
text/turtle
RDFスキーマTurtle形式
application/ld+json
RDFスキーマJSON形式
text/html
コア語彙一覧表（HTML）*.*
コア語彙一覧表（HTML）※なお、http://imi.go.jp/ns/xxxに対するアクセスにつきましては、証明書認証(TLS)方式のhttps://imi.go.jp/ns/xxxへリダイレクトレスポンス(302:Found)で対応します。
9

コア語彙一覧表（HTML）

10

XMLスキーマ11

RDFスキーマRDF/XML形式

12

DMD(データモデル記述)仕様のバージョンについてDMD2.0,2.1では、データモデル定義としてXML, RDFなどで機械言語による判別できるように定義を持たせた仕様としています。

DMD2.0,2.1の構造

DMD3.0では、データモデル定義をIMI語彙記法に統一しました。また、マッピングを記述する技術仕様も併せて策定しました。

DMD3.0の構造

13

IMI共通語彙基盤ライブラリとIMI技術仕様の関係
IMI共通語彙基盤ライブラリは、適用業務として実装するアプリケーションに組み込み利用することで、 IMI共通語彙基盤に対応した構造化データを容易に扱うことができます。
DMD(データモデル記述)仕様
IMI語彙記法
IMI共通語彙基盤ではRDF、XML等、多様な形式・フォーマットで利用可能な語彙を提供することを目的としている。このため、語彙自体は特定の利用形式に依存しない中立的な形式で記述する必要がある。
IMI語彙記法は、これを実現するための記法である。
IMI語彙記法では語彙の中の用語の定義を行う。
IMI語彙記法で定義された語彙はRDFやXMLなど必要な形式に変換することができる。

マッピングファイル仕様
マッピングファイルは、DMD（「DMD仕様書」参照）が定めるデータモデルにおいて値が入る項目と、その代表的なラベルを１対１に結び付けるファイルであり、ユーザーへの表示や、データ入力用のCSVファイルを生成する際、及び、そのCSVファイルから構造化データへの簡易的な変換などに利用される。

構造化項目名記法
使用文字規則の記法

14IMI語彙記法
Vocabulary
クラス定義文(class)クラス定義文は、語彙の定義に用いられ、IMI定義文書内のいずれかの語彙に含まれるクラス用語を定義します。
プロパティ定義文(property)
プロパティ定義文では、制約として、型制約、パターン制約、値等価制約、値開下限制約、値下限制約、値開上限制約、値上限制約、使用可能文字制約が使用できます。
プロパティ設定文(set)
プロパティ設定文は、語彙の定義に用いられ、≪ クラス用語名≫ で指定されたクラス用語のプロパティ用語集合に≪プロパティ用語名≫ で指定されたプロパティ用語を設定します。
Datamodel
用語使用宣言文(use)
用語使用宣言文では、制約として、パターン制約、回数制約、型制約、値等価制約、値開下限制約、値下限制約、値開上限制約、値上限制約、使用可能文字制約が使用できます。
15

クラス定義≪ クラス定義≫:= @"deprecated"? @"class"≪ クラス用語名≫( "{"≪ 型制約≫"}" )?

class ex:ニックネーム型 {@ic:名称型} ;プロパ ティ 定義≪ プロパ ティ 定義≫:= @“deprecated”? @“property”≪ プロパ ティ 用語名≫ ≪ 制約指定≫ *property ex:オレオレ名{@ex:オレオレ名型};
プロパ ティ 設定≪ プロパ ティ 設定≫:= @“deprecated”? @“set”≪ クラス用語名≫“>”≪ プロパ ティ 用語名≫ ≪ 制約指定≫ *set ex:ニックネーム型 > ex:オレオレ名;
用語使用宣言≪ 用語使用宣言≫:= @“use”≪ 厳密構造要素名≫ ≪ 制約指定≫ *use ニックネーム型 > ex:オレオレ名;16マッピングファイル仕様
マッピングファイルは、DMD（「DMD仕様書」参照）が定めるデータモデルにおいて値が入る項目と、その代表的なラベルを１対１に結び付けるファイルであり、ユーザーへの表示や、データ入力用のCSVファイルを生成する際、及び、そのCSVファイルから構造化データへの簡易的な変換などに利用されます。
Mapping
項目ラベルと構造化項目名の対応の一覧であり、値が文字列又はその配列である１個以上のプロパティをもつ。各プロパティの名前はCSV等のヘッダーラベルであり、値はそのラベルが対応付けられる構造化項目名で表現します。

構造化項目名は、クラス用語>プロパティ用語>プロパティ用語>・・・のように「>」で区切って一つのクラス用語と任意の数のプロパティ用語を並べたものです。

構造化項目名記法
構造化項目名の記法は、IMI語彙などの階層構造をもつデータ表現の位置を文字列によって表現するための仕様です。

17

構造化項目名≪ 構造化項目名≫:=≪ 主 キー 指定子≫ ≪ クラス項目≫ |≪ 主 キー 指定子≫? ≪ クラス項目≫( ">"≪ プロパ ティ 項目≫)+≪ 言語指定句≫?≪URL変換子≫?

ex:ニックネーム型>ex:オレオレ名[マスコット]{@種別=‘非公開’}>ic:姓マッピングファイル 仕様での使い方“データ項目名” : “ex:ニックネーム型>ex:オレオレ名[マスコット]{@種別=‘非公開’}>ic:姓”

18

モデルとマッピングとデータの関係
Datamodel X#prefix ic: "http://imi.go.jp/ns/core/2#"#prefix ex: "http://example.org/"
vocabulary "http://example.org/" ;#name "ニックネーム型"
class ex:ニックネーム型 {@ic:名称型} ;#name "オレオレ名型"
class ex:オレオレ名型 {@xsd:string} ;#name "オレオレ名"
property ex:オレオレ名{@ex:オレオレ名型};#name “オレオレ”
set ex:ニックネーム型 > ex:オレオレ名;
datamodel;
use ic:施設型>ic:名称>ic:表記;
use ic:施設型>ic:名称>ic:カナ表記;
use ic:施設型>ic:住所>ic:表記;
use ic:施設型>ic:地理座標>ic:緯度;use ic:施設型>ic:地理座標>ic:経度;
use ic:施設型>ic:地理座標>ic:測地高度>ic:数値;
use ic:施設型>ic:連絡先>ic:電話番号;
use ic:施設型>ic:連絡先>ic:内線番号;
use ic:施設型>ic:関与>ic:役割{='設置主体'};
use ic:施設型>ic:関与>ic:関与者{@ic:組織型}>ic:ID>ic:識別値;
use ic:施設型>ic:記述>ic:種別{='想定収容人数'};
use ic:施設型>ic:記述>ic:説明;
use ic:施設型>ic:関与>ic:関与者{@ic:組織型}>ic:名称>ic:表記;
use ic:施設型>ic:参照>ic:参照先;
use ic:施設型>ic:備考;

Mapping A

公開データ N1
名称

"名称": "ic:施設型>ic:名称>ic:表記","名称_カナ": "ic:施設型>ic:名称>ic:カナ表記","住所": "ic:施設型>ic:住所>ic:表記","想定収容人数": "ic:施設型>ic:記述{種別='想定収容人数'}>ic:説明",“連絡先”:”ic:施設型>ic:連絡先>ic:電話番号”,"URL": "ic:施設型>ic:参照>ic:参照先",“説明”:”ic:施設型>ic:記述>ic:説明”,"備考": "ic:施設型>ic:備考"

住所

想定収
容人数

URL

連絡先

備考

公開データ N2
名称住所

URL

電話番号

備考

連絡先

Mapping B"名称": "ic:施設型>ic:名称>ic:表記","名称_カナ": "ic:施設型>ic:名称>ic:カナ表記","住所": "ic:施設型>ic:住所>ic:表記","緯度": "ic:施設型>ic:地理座標>ic:緯度","経度": "ic:施設型>ic:地理座標>ic:経度","標高": "ic:施設型>ic:地理座標>ic:測地高度>ic:数値","電話番号": "ic:施設型>ic:連絡先>ic:電話番号","内線番号": "ic:施設型>ic:連絡先>ic:内線番号","災害種別_洪水": "ic:施設型>ic:種別コード[災害種別_洪水]>ic:識別値","備考": "ic:施設型>ic:備考"

データ形式変換(Converter)

公開データ N3
名称名称_カナ

住所

緯度軽度

備考

公開データ N4
名称

住所

災害種
別_洪水

連絡先

説明

電話番号

備考

既存データの項目を施設Modelのデータ定義に割り当てることも可能。 Mapping作成者が検討

Turtle,RDF/XML,XML
19特に理解しておきたいポイント
IMI語彙記法の用語使用宣言文・とマッピングファイルの構造化項目名の関係

・IMI語彙記法の用語使用宣言文

値等価制約(データの精度判定に影響)

datamodel;
use ic:人型>ic:年齢>ex:匿名化年齢分類>ic:コード種別>ic:URI{="http://example/code/匿名化年齢分類"};use ic:人型>ic:年齢>ex:匿名化年齢分類>ic:コード種別>ic:表記;

厳密構造要素名×それぞれ相互に構文を解釈をしないと一致性は判定できないので、要注意!

・マッピングファイルの構造化項目名

固定値制約(値を設定する指示)“mapping”:{"匿名化年齢分類": "ic:人型>ic:年齢>ex:匿名化年齢分類>ic:コード種別{ic:URI='http://example.org/code/匿名化年齢分類'}>ic:表記"}

20