注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

プロパティリデューサー [ベータ版]

ベータ版

プロパティリデューサーは開発のベータ版段階にあり、お使いのエンロールメントでは利用できない場合があります。開発が進行している間は、機能が変更される可能性があります。

プロパティリデューサーを使用すると、表示やインターフェース実装のために、配列プロパティを配列内の単一の値に変換できます。縮約によって、基になるプロパティタイプや保存されているプロパティデータが変更されることはありません。代わりに、プロパティ値を読み取るときに、配列内の縮約された値にアクセスできるようになります。

たとえば、複数の検査日を含む配列にリデューサーを適用すると、テーブルやアプリケーションでプロパティを表示する際に最新の日付のみを表示できますが、クエリやその他の操作では引き続き配列全体にアクセスできます。Workshop などのリデューサーをサポートするアプリケーションでは、ホバー時や展開表示でも配列全体を表示できます。

リデューサーは、数値、時間、文字列、ブール値のベースタイプを含む配列プロパティで使用できます。構造体の配列は、サポートされるベースタイプを使用する任意の構造体フィールドに基づいて縮約できます。プロパティリデューサーがサポートするベースタイプの詳細については、以下のテーブルを確認してください。

プロパティリデューサーを使用する場面

次の場合にプロパティリデューサーを使用します。

  • 検査日、ステータスの更新、測定値などの履歴データや時間データが配列に保存されている場合。
  • プロパティの履歴全体を保持しながら、テーブルやアプリケーションで配列の最新/最古、最大/最小、または最初/最後の値を表示したい場合。
  • 配列プロパティでインターフェースプロパティを適切に実装するために、配列ではないデータ型が必要な場合。

サポートされるベースタイプとサポートされないベースタイプ

リデューサーは、基になるベースタイプに応じて配列プロパティで使用できます。以下のテーブルでは、リデューサーをサポートする配列のサブタイプと、サポートしないサブタイプを分類しています。

サポートされるベースタイプ

次のサブタイプを含む配列では、プロパティリデューサーを利用できます。

カテゴリーベースタイプリデューサーの選択肢
数値Byte, Short, Integer, Long, Float, Double, Decimal最大、最小
時間Date, Timestamp最新、最古
文字列String最初、最後(辞書順)
ブール値Booleantrue を優先、false を優先
構造体以下で説明する、サポートされる任意の構造体フィールドによる構造体フィールドのベースタイプによって異なります

サポートされないベースタイプ

次のサブタイプを含む配列では、プロパティリデューサーを利用できません。

  • Attachment
  • Cipher Text
  • Geohash
  • Geoshape
  • Geotemporal Series Reference
  • Marking
  • Media Reference
  • Time Dependent
  • Vector

構造体配列のサポート

リデューサーは、構造体自体ではなく、構造体内の特定のフィールドに基づいて構造体配列を縮約します。縮約に使用できるのは、上記のサポートされるベースタイプのいずれかを使用する構造体フィールドのみです。また、異なる構造体フィールドを使用する複数のリデューサーを設定して、同順位の項目がある場合に対処することもできます。

プロパティリデューサーを設定する

  1. Ontology Manager に移動します。
  2. 左側のパネルのリソースでオブジェクトタイプを選択し、オブジェクトタイプを検索して選択します。
  3. オブジェクトタイプのプロパティタブから、設定する配列プロパティを選択します。
  4. 右側に開くプロパティエディターパネルで、インタラクションタブを選択します。
  5. 配列を縮約セクションまでスクロールします。
インタラクションタブがあるプロパティサイドバー
  1. 配列リデューサーを追加するを選択します。
  2. プロパティのベースタイプに応じて、必要なリデューサーの選択肢を選択します。
リデューサーを追加するセクション
  1. 変更を保存します。

構造体配列のプロパティリデューサーを設定する

構造体配列では、リデューサーを最も柔軟に使用できます。サポートされるベースタイプを使用する構造体内の任意のフィールドに基づいて縮約でき、同順位の項目がある場合に対処するために複数のリデューサーを設定できます。

例:顧客レビューの履歴

次のフィールドを含む customerReviews 構造体配列プロパティを持つ Product オブジェクトタイプを考えます。

  • rating (`Integer):1〜5つ星の評価。
  • reviewDate (Date):顧客がレビューを投稿した日付。
  • reviewerName (String):レビュー投稿者の名前。
  • verifiedPurchase (Boolean):購入が確認されたかどうかを示します。

Product オブジェクトの customerReviews プロパティのサンプルデータは、次のようになります。

ratingreviewDatereviewerNameverifiedPurchase
52024-11-20Alice Chentrue
32024-11-15Bob Smithfalse
42024-11-22Carol Leetrue

単一のリデューサーを設定する

開始する前に、プロパティリデューサーの設定手順とサポートされるベースタイプのテーブルを確認してください。構造体フィールドに単一のリデューサーを設定できます。Foundry はそのリデューサーを使用して構造体の配列を単一の構造体に縮約し、リデューサーが設定されたフィールドに基づいて、表示する値を並べ替えます。

  • 単一のリデューサー: 最新の reviewDate を表示します。
  • 結果: 2024-11-22 に投稿された Carol Lee の4つ星レビューを含む構造体が表示されます。

ユーザーは引き続き、レビュー履歴全体をクエリしてアクセスできます。

複数のリデューサーを設定する

複数のリデューサーを設定して、同順位の項目がある場合に対処できます。

  • 主要リデューサー: 構造体を並べ替え、最新の reviewDate を持つ構造体を表示します。
  • フォールバックリデューサー: 最大の rating を表示します。
  • ユースケース: 同じ日に2件のレビューが投稿された場合、評価の高いレビューを表示します。

フォールバックリデューサーは、主要リデューサーの結果に複数の項目が含まれる場合にのみ適用されます。主要リデューサーは常に最初に評価され、主要な基準で同順位になった項目のみが、フォールバックリデューサーによってさらに縮約されます。追加のリデューサーが設定されている場合も、この縮約動作が繰り返されます。

構造体配列リデューサーの設定

アプリケーションでのリデューサーの表示

リデューサーをサポートするアプリケーションでは、テーブルやリストなどのコンパクトな表示で縮約された値が表示され、展開表示やホバー時の仕組みを通じて配列全体にアクセスできます。この方法により、ユーザーは冗長な配列表示を見ることなくデータをすばやく確認でき、必要なときには配列全体を詳しく確認することもできます。

たとえば、アプリケーションではテーブルのセルに 2024-11-22(最新の日付)のみが表示され、ユーザーがそのセルにホバーするか展開すると、日付の配列全体が表示される場合があります。

インターフェースでプロパティリデューサーを使用する

プロパティリデューサーを使用すると、配列プロパティで配列以外のインターフェースプロパティを実装できます。これにより、配列データを持つオブジェクトタイプを、単一の値を期待するインターフェースプロパティにマッピングできます。

例:インターフェースの実装を通じて機器の最新のメンテナンス日を表示する

インターフェース: Asset

  • プロパティ:lastMaintenanceDate (Date)

オブジェクトタイプ: Equipment

  • プロパティ:maintenanceHistory(Date 配列)
    • 値:[2024-01-15, 2024-03-22, 2024-11-01]
  • リデューサー: maintenanceHistory の最新の日付。
  • 実装: Date 配列プロパティが、設定されたリデューサーを通じて単一の Date を実装します。インターフェースを通じてこのプロパティを表示すると、2024-11-01 が表示されます。

リデューサーによって maintenanceHistory 配列プロパティを単一の Date 値として表現できるため、Equipment オブジェクトタイプは Asset インターフェースを実装できます。ユーザーが Asset インターフェースを通じて Equipment オブジェクトを表示すると、最新のメンテナンス日のみが表示されます。

リデューサーによるインターフェースの実装

オブジェクトタイプの配列を縮約した値を使用して、インターフェースアクションのパラメーターであるインターフェースプロパティを満たす場合、そのタイプのオブジェクトに対してアクションを呼び出すとエラーが返されます。ただし、配列を縮約した値を通じてインターフェースを実装していないオブジェクトに対しては、引き続きインターフェースアクションを使用できます。

プロパティリデューサーと構造体のメインフィールドを組み合わせる

プロパティリデューサーと構造体のメインフィールドを組み合わせると、プロパティの表示が可能になり、実装できるインターフェースの数と形式が広がります。

以下の Event オブジェクトタイプについて考えます。このオブジェクトタイプには、構造体の配列である Locations プロパティが含まれています。

オブジェクトタイプ: Event

  • プロパティ:locations(Struct 配列)
    • 構造体フィールド:streetName (String)、dateCollected (Date)、numberOfGuests (Integer)。
  • 設定されたメインフィールド: streetName
  • 設定されたリデューサー: dateCollected に基づく最新の値。

streetName フィールドをメインフィールドとして設定し、最新の dateCollected を選択するプロパティリデューサーを設定すると、インターフェースの実装に複数の選択肢が生まれます。

設定実装可能なデータ型
どちらの機能も未設定Struct Array のみ
メインフィールドのみStruct Array、String Array
リデューサーのみStruct Array、Struct
両方を設定Struct Array、String Array、Struct、String

たとえば、構造体のメインフィールドとプロパティリデューサーの両方を設定すると、locations プロパティを使用して、以下の画像に示す仮の Event インターフェースの Event street name のような、インターフェースの単一の文字列プロパティを満たすことができます。

リデューサーとメインフィールドによる単一の文字列の実装

構造体のメインフィールドとプロパティリデューサーの両方を設定すると、変換では次の処理が行われます。

  • 設定されたプロパティリデューサーを適用し、日付に基づいて最新の場所を取得します。
  • 設定されたメインフィールドを抽出し、その値を文字列として返します。

つまり、単一のプロパティで、Struct Array、String Array、Struct、String のいずれかのデータ型を必要とするインターフェースを実装できます。

制限事項と考慮事項

  • 縮約された値への直接のクエリは不可: 縮約された値に基づく絞り込みやクエリはできません。クエリは、縮約された表現ではなく、配列全体に対して実行されます。
  • リデューサーまたは構造体のメインフィールドによる実装ではインターフェースアクションを利用できません: プロパティリデューサーまたは構造体のメインフィールドを通じて実装されたプロパティを編集するインターフェースアクションは、そのタイプのオブジェクトに対して呼び出すとエラーを返します。これは、縮約された値や構造体のメインフィールドの値を、元のオブジェクトプロパティに戻せないためです。たとえば、配列から1個の要素を選択するリデューサーには、配列全体を再構成する逆操作がありません。また、フィールドの一部を抽出する構造体のメインフィールドでは、残りのフィールドに値を設定する方法がありません。これらのプロパティを対象としないインターフェースアクション、またはリデューサーや構造体のメインフィールドを使用せずにインターフェースを実装するオブジェクトを対象とするインターフェースアクションは、期待されるとおりに動作します。

よくある質問

設定後にリデューサーを変更または削除できますか?

はい、Ontology Manager でいつでもリデューサーを変更または削除できます。変更に再インデックスは不要で、即座に反映されます。

リデューサーの条件で複数の項目が同順位になった場合はどうなりますか?

構造体の配列では、同順位に対応するためにフォールバックリデューサーを設定できます。フォールバックリデューサーは、主要なリデューサーで同順位となった項目に対してのみ評価されます。プリミティブ型の配列、またはフォールバックリデューサーのない構造体の場合、同順位の値のうち1つが、決定論的ですが順序付けに基づかない方法で返されます。

編集専用プロパティでリデューサーを使用できますか?

はい、編集専用プロパティにリデューサーを設定できます。リデューサーの設定は、プロパティに元の列があるかどうかとは無関係です。

リデューサーはすべてのアプリケーションで機能しますか?

アプリケーションでは、縮約されたプロパティへの対応を段階的に展開しています。プロパティにリデューサーを設定し、リデューサーにまだ対応していないアプリケーションを使用しても、既存の機能が損なわれることはないはずです。プロパティは単に配列として引き続き表示されます。縮約された値を表示できるのは、リデューサーに対応したアプリケーションのみです。