← /teach Study Portal (maiml) に戻る /teach lesson

Lesson 0002: 分析データ・測定条件とプロトコルテンプレートの紐付け

分光データ(UV-Vis)を題材に、Place参照とMaterial / Condition / Result の具体化を学ぶ

Lesson 0001 では MaiML の4大セクションの基本構造を学びました。本レッスンでは、実際の分析機器(UV-Vis 分光光度計など)を想定し、「測定手順(Protocol)のテンプレート」と「測定データ(Data)の実体」をどのように紐付け、波形や条件を格納するかをハンズオンで習得します。

1. テンプレートと実体(Instance)の 3本柱

MaiML において、測定結果を格納する <results> 要素の中核は以下の 3 つの要素から構成されます。

2. 厳密な制約: テンプレートは必ずペトリネットの Place を指す

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")
)

3. スペクトルデータ(数値シーケンス)の格納

分光測定の波長(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 など)を用い、人間向けの詳細文は descriptionannotation に記載します。

4. 理解度チェック (Retrieval Practice)

Q: MaiML のスキーマ上、MaterialTemplate や ResultTemplate を定義する際に必須となる参照はどれですか?

A: 測定者のIDを指す creatorRef が必須である
B: 測定機器のIDを指す vendorRef が必須である
C: ペトリネットの状態を指す placeRef が必須である
D: 実行命令のIDを指す instructionRef が必須である
← Lesson 0001 Next: Lesson 0003 (プロトコルテンプレートの再利用とバッチデータ追記)