DatasetStore
インストールのデータセットを保存するポート。目的(学習または評価)を持つレビュー済みの文書。
ポート: DatasetStore。
indx_interfaces.protocols
で、indx_interfaces.datasets
のモデルの上に宣言しています(ADR-0077)。
Dataset は、キー(invoices_eval)、名前、DatasetPurpose(training または evaluation)、任意で
文書のタイプ、そして文書です。各文書はダイジェストと写し取った文書名です。例は、それらのダイジェストに
保存されたラベルで、求められたときに LabelStore から読みます。
class DatasetStore(Protocol): def put(self, owner: OwnerId, dataset: Dataset) -> None: ... def get(self, owner: OwnerId, dataset_id: DatasetId) -> Dataset | None: ... def list(self, owner: OwnerId) -> tuple[Dataset, ...]: ... def delete(self, owner: OwnerId, dataset_id: DatasetId) -> bool: ...LabelStore にメソッドを足すのではなく 5 つ目のストアのポートにするのは、データセットは人が整えるときに、
ラベルは人がレビューするときに変わるからです。ポートは集約ごとに分けます。データセットは失効しないので、
purge はありません。同梱するバックエンドは memory、sqlite、postgres の 3 つで、INDX_DATASET_STORE
が名指します。
- オーナー。 どのメソッドも最初に
OwnerIdを取り、オーナーをまたぐものはありません。 - 同一性。 オーナーの中で、データセットはそのキーです。
putは同じキーのものを置き換えます。 - 冪等性。 ないキーの
deleteはFalseです。 - 順序。
listはオーナーのデータセットをキー順に返します。 - 検証。 モデルは 2 度並んだダイジェストを拒みます。タイプが存在するか、同じタイプの評価と学習の データセットの両方に入るダイジェストがないかを確かめるのは、ストアではなくサーバーです。
tests/unit/test_store_conformance.py
が、インストール済みのすべてのバックエンドをこの規則に従わせます。