Lesson 0001 では MaiML の4大セクションの基本構造を学びました。本レッスンでは、実際の分析機器(UV-Vis 分光光度計など)を想定し、「測定手順(Protocol)のテンプレート」と「測定データ(Data)の実体」をどのように紐付け、波形や条件を格納するかをハンズオンで習得します。
MaiML において、測定結果を格納する <results> 要素の中核は以下の 3 つの要素から構成されます。
<material> (試料情報): 測定対象サンプルの情報(サンプルID、溶媒、濃度など)。プロトコル側の <materialTemplate> を ref で参照します。
<condition> (測定条件): 機器の設定値(走査速度、スリット幅、温度など)。プロトコル側の <conditionTemplate> を ref で参照します。
<result> (測定値・スペクトル): 機器が出力した値(波長リスト、吸光度リストなど)。プロトコル側の <resultTemplate> を ref で参照します。
MaiML のスキーマおよび業務ルール検証では、プロトコル内のすべてのテンプレート(Material / Condition / Result)が、ペトリネット上のどの状態(Place)で入力・生成されるのかを <placeRef> で明示することが義務付けられています。
# Python (maiml_domain) での記述例:
# Place2 (結果生成状態) に紐付く ResultTemplate
res_template = m.ResultTemplateType(
id="rt1",
place_refs=[m.PlaceRefType(id="pref3", ref=place_result.id)],
content=m.GlobalObjectContent(uuid=ids.new_uuid(), name="AbsorptionSpectrum_Template")
)
分光測定の波長(X軸)や吸光度(Y軸)のような数値の配列データは、DoubleListType などのリスト型プロパティを使用してXML内に空白区切りシーケンスとしてスマートに格納されます。
<property key="wavelength_nm" xsi:type="doubleListType">
<value>400.0 450.0 500.0 550.0 600.0 650.0 700.0</value>
</property>
<property key="absorbance_au" xsi:type="doubleListType">
<value>0.12 0.285 0.85 0.94 0.42 0.15 0.08</value>
</property>
注意点 (QName制約): MaiML の各要素の<name>は XML のxs:QName形式に従う必要があります。スペースや記号を含めずアンダースコア(Sample_Solution_102など)を用い、人間向けの詳細文はdescriptionやannotationに記載します。