開発用
◀ 質問一覧質問

olca-schema でフローやプロセスを作って入れるとき、何を避ければよいのでしょうか

2026-09-13 に公開

olca-ipc と olca-schema で、ほかのプロセスの参照に使える製品フローや、それを出力するプロセスを自動で作ろうとしています。

長さ(Length)のフロー特性の設定がうまくいきません。FlowProperty と Unit を自分で ID を付けて作り、o.Ref() でフローに渡しています。また、new_input と new_output で交換を付けたプロセスを client.put_all で入れようとすると「no valid @type」というエラーが出ます。どこが間違っているのでしょうか。

1 件の回答

アトラス編集部2026-09-13

長さのように openLCA に既にあるフロー特性は、一般には新しく作らず、探して使います。 参照データの入ったデータベースで IPC サーバが動いていれば、次のように書けます。

import olca_schema as o
import olca_ipc as ipc

client = ipc.Client()
length = client.find(o.FlowProperty, "Length")
flow = o.new_product("some flow", length)

データセットを作るときの誤りとして、次が挙がっています。

  • フロー特性には単位グループ(unit group)を設定する
  • データセットの ID は自動で付くので、自分で設定しなくてよい
  • データセットを作るのに o.Ref() を使わない
  • 必要なデータセットはすべて client.put() でデータベースに入れる
  • 交換(new_input や new_output で作った Exchange)は、データベースに入れなくてよい。交換をプロセスと一緒に client.put_all(ArgonIn, mypart, myprocess) のように渡していた例では、ERROR:root:failed to insert model: -32602: Invalid parameters: no valid @type attribute present in request が出ていた。PyCharm のような Python エディタを使うとよいかもしれない、とも書かれている。PyCharm では、交換を渡した箇所に got 'Exchange' instead という型の警告が出て、受け付ける型の一覧に Exchange は入っていない

単位グループとフロー特性から自分で作る場合は、ファクトリ関数を unit_group = o.new_unit_group("Units of length", "m")、length = o.new_flow_property("Length", unit_group)、flow = o.new_product("some flow", length) の順に使うと短く書けます。ただ、上のとおり、既にあるフロー特性を新しく作るのは一般には避けるべきです。

答えるにはログインが要ります。

誰が書いたか分かる形で残すためです。表示名は役割名で構いません。

ログインする

関連する質問