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

MaiML (JIS K 0200) チートシート

XML構造、Python SDK (pymaiml / maiml-domain) クイックリファレンス

1. 4大セクションと主な要素

<maiml xmlns="http://www.maiml.org/schemas" xsi:type="maimlRootType" version="1.0">
  <document id="doc1">
    <creator/> <vendor/> <owner/> <date/>
  </document>
  <protocol id="protocol1">
    <method id="m1">
      <pnml> (<place/>, <transition/>, <arc/>) </pnml>
      <program> (<instruction/>) </program>
    </method>
    <materialTemplate id="mt1"/>
  </protocol>
  <data id="data1">
    <results>
      <material ref="mt1"/> <!-- Protocol のテンプレートを参照 -->
    </results>
  </data>
  <eventLog id="log1">
    <log ref="m1">
      <trace ref="program1">
        <event ref="instr1">
          <property key="lifecycle:transition" xsi:type="stringType">
            <value>complete</value>
          </property>
        </event>
      </trace>
    </log>
  </eventLog>
</maiml>

2. Python SDK コードスニペット

環境構築 (uv)

uv init .
uv add "pymaiml @ git+https://github.com/MaiML-Library/PyMaiML.git"

シリアライズ・保存

from pymaiml import serialization
from pymaiml.builders import LIFECYCLE_NS

# root は maiml_domain.MaimlRootType インスタンス
serialization.dump(root, "sample.maiml", extra_namespaces={"lifecycle": LIFECYCLE_NS})

検証 (バリデーション)

from pymaiml.validation import validate

result = validate("sample.maiml")
if not result.ok:
    for finding in result.findings:
        print(finding)

読み込み・クエリ

from pymaiml import serialization, query

loaded = serialization.load("sample.maiml")
root = loaded.root
print("Registered IDs:", loaded.ids)

# UUID一覧の取得
uuids = query.get_uuids(open("sample.maiml").read())